Mysql时间类型列的索引使用

问题: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' 。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容