问题:mysql中datetime类型的列建立索引之后,怎么在查询中使用到索引?
比如:我要查今天的数据。
1.=前面列使用date函数
SELECT * FROM A WHERE DATE(CREATE_DATE) = '2019-07-31';
这种方式我想不用试就应该知道了是不会使用索引的,使用explain看一眼是不是和我想的一样

果然,扫描了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';
结果是一样的

扫描了336行,key列也是我们的索引名称
3.使用mysql的CURDATE()函数
SELECT * FROM A WHERE CREATE_DATE >= CURDATE();
这种跟2是一样的,CURDATE()返回的就是 '2019-07-31' 。
网友评论