查询条件为mysql中的now()函数时,不能使用索引的varchar列

时间:2017-01-17 07:59:40

标签: mysql

背景

就我而言,mysql是5.7。

有一个名为A的表和一个名为date_str的索引列。 date_str中的数据看起来像2017-01-16 00:00:00

问题:

我发现索引不能用于范围查询,例如select * from A where date_str > now()enter image description here

但是当查询条件是另一个函数right()时使用索引。

enter image description here

有谁知道为什么会这样?感谢。

1 个答案:

答案 0 :(得分:0)

根据您的查询计划,如果需要,将使用您的索引。

在应用任何索引之前,数据库查询分析器会分析查询并估算不同操作的成本。

如果查询分析器发现应用索引将提高查询性能,那么只有它才会使用索引。

这些统计数据会因表格中的增加/减少/更新数据而发生变化。