我正在使用解释来测试这些查询。 col类型为DATE
这使用索引:
explain SELECT events.* FROM events WHERE events.date = '2010-06-11'
这不是
explain SELECT events.* FROM events WHERE events.date >= '2010-06-11'
索引如下(phpmyadmin)
Action Keyname Type Unique Packed Field Cardinality Collation Null Comment
Edit Drop PRIMARY BTREE Yes No event_id 18 A
Edit Drop date BTREE No No date 0 A
我注意到基数为0,尽管有些行具有相同的日期..
答案 0 :(得分:7)
如果MySQL没有使用索引,它已经看到了你的查询,并估计表扫描可能比使用索引更快(就可能需要的IO /磁盘操作而言)。您可以使用FORCE INDEX
并使用索引检查此查询是否实际上更快。
SELECT events.* FROM events
FORCE INDEX (date)
WHERE events.date >= '2010-06-11';