Gla*_*ost 2 mysql index mysql-5.6
我有一个日期时间字段,但我经常查询日期部分,如下所示
select * from table where date(datetime_field)=curdate()
Run Code Online (Sandbox Code Playgroud)
此查询不能在 datetime_field 上使用索引!对代码或数据库进行最少更改的最佳解决方案是什么?
附言。如果有我还不知道的解决方案,升级 mysql 可能是一个选择,但 5.6 的更短期解决方案将不胜感激
问题不在于索引。问题是您编写的查询不允许使用索引。
修改您的查询,以便将日期范围解析为一对常量并解决问题:
WHERE datetime_field >= CURDATE()
AND datetime_field < DATE_ADD(CURDATE(), INTERVAL 1 DAY)
Run Code Online (Sandbox Code Playgroud)
这将使用列上的索引。
通常,切勿使用列作为函数的参数,WHERE因为这会强制进行表扫描。
| 归档时间: |
|
| 查看次数: |
897 次 |
| 最近记录: |