一、案例描述
今日在进行MYSQL日常检查时,发现有一条SQL语句,在字段类型为datetime并创建索引的情况下,进行between (sysdate()+interval(-1) hour) and sysdate()时并不会使用索引,但是用now()代替sysdate就可以使用索引,这是为什么呢?
二、问题
为什么datetime字段(已有且只有一个关键字的索引)与sysdate()进行比较运算时不使用索引,而用now()则会?
三、思路
不使用索引的情况一般是类型不对,那么sysdate()返回的类型不是datetime? 判断sysdate()返回的类型
四、收集数据与分析
- 确认sysdate(),now()的返回类型
create table qqt.t1 as select