码迷,mamicode.com
首页 > 其他好文 > 详细

DATE_FORMAT索引问题

时间:2020-07-30 01:31:00      阅读:84      评论:0      收藏:0      [点我收藏+]

标签:select   lazy   问题   mamicode   set   ant   date   str   size   

结论:使用 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索引问题

标签:select   lazy   问题   mamicode   set   ant   date   str   size   

原文地址:https://www.cnblogs.com/silenceshining/p/13401430.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!