我在某些具有大量可能结果集的数据库查询上遇到了性能问题。
有问题的查询,我AND在 WHERE 子句中有三个
条款的顺序重要吗?
就像,如果我把 ASI_EVENT_TIME 子句放在第一位(因为这会从任何子句中删除大部分结果。
这会改善查询的运行时间吗?
询问:
SELECT DISTINCT activity_seismo_info.*
FROM `activity_seismo_info`
WHERE
activity_seismo_info.ASI_ACTIVITY_ID IS NOT NULL AND
activity_seismo_info.ASI_SEISMO_ID IN (43,44,...,259) AND
(
activity_seismo_info.ASI_EVENT_TIME>='2011-03-10 00:00:00' AND
activity_seismo_info.ASI_EVENT_TIME<='2011-03-17 23:59:59'
)
ORDER BY activity_seismo_info.ASI_EVENT_TIME DESC
Run Code Online (Sandbox Code Playgroud)
查询的解释:
+----+-------------+---------+-------+---------------------------+--------------+---------+------+-------+-----------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+---------+-------+---------------------------+--------------+---------+------+-------+-----------------------------+
| 1 | SIMPLE | act...o | range | act...o_FI_1,act...o_FI_2 | act...o_FI_1 | 5 | NULL | 65412 …Run Code Online (Sandbox Code Playgroud)