2

我正在使用这个查询:

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现在查询几乎是即时的。

我已经尝试在谷歌上快速搜索这些差异,但似乎找不到任何具体证据证明为什么一种方法会比另一种方法更快。

谁能帮我解决这个问题?为什么单列索引比相同列上的配对索引快得多?(当然在这种情况下更快)。

非常感谢。

4

1 回答 1

1

您没有使用配对索引。您一次只根据其中一列来限制您的数据。不是两者都同时发生。

实际上,TIME由于您的WHERE子句,您只是在使用索引。WHERE如果您的子句限制了SENSOR_ID附加索引,则配对索引将加快您的查询速度。

要查看真正使用了哪些索引,您应该查看查询的执行计划。

于 2013-09-05T12:00:27.757 回答