数据库时间类型查询未使用索引

数据库时间类型查询未使用索引

问题 :

  1. 由于业务需求,目前需要在数据库中根据时间查询数据,数据库内字段类型为datetime;
  2. 在sql中采用的是 date_sub函数获取时间 —> date_sub(now(),interval 30 day) ;
  3. date_sub(now(),interval 30 day) 获取的时间是varchar类型,无法使用到索引,由于数据量较大,故而影响效率较为严重.

解决 :

  1. 原因寻找,类型不同而无法使用到索引,想办法在sql内将varchar转datetime;
  2. 使用过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