我们在mariadb中有一张表格,其中有300万行。该表已被索引。我们的工作是在此表中插入300万条记录。在此表上的查询需要一分钟以上。观察到在插入数据后的某个时间查询很快(例如30分钟后)。 我们的观察是,表索引编制需要花费时间,一旦建立索引,查询就会迅速执行。 示例查询就像
select count(distinct userd_id) from users;
其中对user_id列进行索引的位置。下面是有关查询的说明
+------+-------------+---------------------------+-------+---------------+-------------------------+---------+------+---------+------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+------+-------------+---------------------------+-------+---------------+-------------------------+---------+------+---------+------------------------------+
| 1 | SIMPLE | users | index | NULL | index_on_user_id | 13 | NULL | 3505169 | Using index; Using temporary |
+------+-------------+---------------------------+-------+---------------+-------------------------+---------+------+---------+------------------------------+
为减少查询执行时间,我们可以采取的最佳配置是什么? 系统具有8核和32 GB RAM,设备具有500GB存储空间。