mysql 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字段不需要回表查詢。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM