Mysql时间类型列的索引使用

3,578 阅读1分钟

问题:mysql中datetime类型的列建立索引之后,怎么在查询中使用到索引?

比如:我要查今天的数据。

1.=前面列使用date函数

SELECT * FROM A WHERE DATE(CREATE_DATE) = '2019-07-31';

这种方式我想不用试就应该知道了是不会使用索引的,使用explain看一眼是不是和我想的一样

1.png
果然,扫描了467718行,key列为空,没有使用到索引

2.>后面使用date函数

SELECT * FROM A WHERE CREATE_DATE >= DATE('2019-07-31 17:36:00');

额,这种方式不一定会有人用,但还是看一下,因为我们可以直接使用这种方式

SELECT * FROM A WHERE CREATE_DATE >= '2019-07-31';
SELECT * FROM A WHERE CREATE_DATE >= '2019-07-31 00:00:00';

结果是一样的

1.png
扫描了336行,key列也是我们的索引名称

3.使用mysql的CURDATE()函数

  SELECT * FROM A WHERE CREATE_DATE >= CURDATE();

这种跟2是一样的,CURDATE()返回的就是 '2019-07-31' 。