我有一条
结果:我尝试了@meriton建议的方法,并添加了索引
SELECT
语句,希望对其进行优化。mysql - order by optimization中提到,在某些情况下,索引无法用于优化ORDER BY
。具体来说是指:
这让我想到可能是这种情况。我正在使用以下索引:您在键的非连续部分上使用ORDER BY
SELECT * FROM t1 WHERE key2=constant ORDER BY key_part2;
UNIQUE KEY `met_value_index1` (`RTU_NB`,`DATETIME`,`MP_NB`),
KEY `met_value_index` (`DATETIME`,`RTU_NB`)
使用以下SQL语句:
SELECT * FROM met_value
WHERE rtu_nb=constant
AND mp_nb=constant
AND datetime BETWEEN constant AND constant
ORDER BY mp_nb, datetime
- 删除索引
met_value_index1
并按照新的顺序RTU_NB
,MP_NB
,DATETIME
创建它是否足够? - 我需要在
ORDER BY
子句中包含RTU_NB
吗?
结果:我尝试了@meriton建议的方法,并添加了索引
met_value_index2
。 SELECT
完成时间为1.2秒,之前为5.06秒。以下不属于问题,只是附注:在其他尝试之后,我将引擎从MyISAM切换到InnoDB - 并将rtu_nb, mp_nb, datetime
设置为主键 - 语句完成时间为0.13秒!