背景
就我而言,mysql是5.7。
有一个名为A
的表和一个名为date_str
的索引列。 date_str
中的数据看起来像2017-01-16 00:00:00
。
问题:
我发现索引不能用于范围查询,例如select * from A where date_str > now()
。
但是当查询条件是另一个函数right()
时使用索引。
有谁知道为什么会这样?感谢。
答案 0 :(得分:0)
根据您的查询计划,如果需要,将使用您的索引。
在应用任何索引之前,数据库查询分析器会分析查询并估算不同操作的成本。
如果查询分析器发现应用索引将提高查询性能,那么只有它才会使用索引。
这些统计数据会因表格中的增加/减少/更新数据而发生变化。