当与'<'一起使用时,MySQL不在DATE使用索引或'>'运营商?

时间:2010-06-18 10:53:22

标签: mysql

我正在使用解释来测试这些查询。 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,尽管有些行具有相同的日期..

1 个答案:

答案 0 :(得分:7)

如果MySQL没有使用索引,它已经看到了你的查询,并估计表扫描可能比使用索引更快(就可能需要的IO /磁盘操作而言)。您可以使用FORCE INDEX并使用索引检查此查询是否实际上更快。

SELECT events.* FROM events
FORCE INDEX (date)
WHERE events.date >= '2010-06-11';