我正在使用此查询:
SELECT SENSOR_ID, (BOX_COUNT * 6) AS BOX_COUNT, `TIME` AS `TIMESTAMP`
FROM lu_sensor_log INNER JOIN lu_sensors S
ON S.MACHINE_ID=1 AND S.ID=SENSOR_ID
WHERE `TIME` >= '2013-09-04 15:30:00' AND `TIME` <= ' 2013-09-04 17:00:00'
ORDER BY `TIME` ASC
这是一个非常简单的查询,没有什么复杂的。以前,我们的数据库表具有SENSOR_ID
和TIME
的配对索引。此查询将花费(平均)4秒完成。我已经删除了配对索引并在列SENSOR_ID
和TIME
上设置了单独的索引 - 现在查询几乎是即时的。
我尝试过快速谷歌搜索差异,但似乎无法找到任何具体的证据,说明为什么一种方法会比另一种更快。
有人可以帮我清楚吗?为什么单列索引比同一列上的配对索引快很多? (当然,在这种情况下更快)。
非常感谢。
答案 0 :(得分:1)
您没有使用配对索引。您一次根据其中一列限制数据。不是一次两个。
实际上,由于您的TIME
子句,您只是使用WHERE
索引。如果WHERE
子句另外限制SENSOR_ID
,则配对索引可以加快查询速度。
要查看实际使用的索引,您应该查看查询的执行计划。