数据库时间类型查询未使用索引
其他
2021-11-29 16:27:58
阅读次数: 0
数据库时间类型查询未使用索引
问题 :
- 由于业务需求,目前需要在数据库中根据时间查询数据,数据库内字段类型为datetime;
- 在sql中采用的是 date_sub函数获取时间 —> date_sub(now(),interval 30 day) ;
- date_sub(now(),interval 30 day) 获取的时间是varchar类型,无法使用到索引,由于数据量较大,故而影响效率较为严重.
解决 :
- 原因寻找,类型不同而无法使用到索引,想办法在sql内将varchar转datetime;
- 使用过time函数,但是后来发现该函数获取的值为时分秒,不可用; 后来使用 str_to_date 函数解决
str_to_date(date_sub(now(),interval 30 day),’%Y-%m-%d %H:%i:%s’) 即可得到datetime类型
注: 此处也可使用convert函数解决,但该函数较为影响sql执行效率,不推荐.
转载自blog.csdn.net/weixin_44974020/article/details/109219949