我有一个包含数百万行的表,其中有 2DATE
列用于指定开始和结束日期范围。我对两列都有一个索引,但它没有被使用,并且查询需要 10 秒才能运行,这是完全不可接受的。我的查询很简单:
SELECT * FROM `events` WHERE `valid_from` <= "2013-05-05" AND `valid_to` >= "2013-05-05"
为什么这不使用索引并且需要这么长时间才能运行?
编辑
对于EXPLAIN
上面的查询:
+----------------------------------------------------------------------------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----------------------------------------------------------------------------------------------------+
| 1 | SIMPLE | events | ALL | valid_from_to | NULL | NULL | NULL | 2166894 | Using where|
+----------------------------------------------------------------------------------------------------+