数据库时间类型查询未使用索引
问题 :
由于业务需求,目前需要在数据库中根据时间查询数据,数据库内字段类型为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执行效率,不推荐.