DATE_FORMAT索引问题
Posted silenceshining
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DATE_FORMAT索引问题相关的知识,希望对你有一定的参考价值。
结论:使用 DATE_FORMAT在mysql中是无法利用索引检索的。
测试:time字段设置了Normal索引。
mysql> SELECT * FROM time_demo;
+----+----------+---------------------+
| id | quantity | time |
+----+----------+---------------------+
| 1 | 2 | 2020-03-02 23:19:38 |
| 2 | 5 | 2020-03-05 23:20:02 |
| 3 | 10 | 2020-02-10 23:20:22 |
| 4 | 20 | 2020-01-08 23:20:42 |
| 5 | 8 | 2020-04-15 23:20:58 |
| 6 | 100 | 2019-12-10 23:21:13 |
+----+----------+---------------------+
6 rows in set
使用explain分析查询索引使用情况:
查询一:
EXPLAIN SELECT * FROM time_demo WHERE time > ‘2020-01-01‘;
结果:使用了time索引,但不是覆盖索引,进行了回表查询。
查询二:
EXPLAIN SELECT * FROM time_demo WHERE DATE_FORMAT(time,‘%Y-%m-%d‘) > ‘2020-01-01‘;
结果:使用DATE_FORMAT时不走索引。
查询三:
EXPLAIN SELECT time,id FROM time_demo WHERE time > ‘2020-01-01‘;
结果:使用了time索引,是覆盖索引,查询time,id字段不需要回表查询。
以上是关于DATE_FORMAT索引问题的主要内容,如果未能解决你的问题,请参考以下文章
solr分布式索引实战分片配置读取:工具类configUtil.java,读取配置代码片段,配置实例
javascript UV Index Monitor App订阅PubNub并显示UV索引值。博文的代码片段。在这里查看项目:https:// githu
c_cpp UV Index Indicator订阅PubNub并使用颜色显示UV索引值。博文的代码片段。在这里查看项目:https:/