之前的印象中,字段上使用了函数操作,查询不会走索引。
一,AI回答
回答1


回答2
 回答3
 回答3
 

二,测试样例
查询未来n天内所有数据
查询方式1
EXPLAIN SELECT
     * 
 FROM
     vehicle_info 
 WHERE
     annual_inspection_due_date BETWEEN NOW( ) 
     AND DATE_ADD( NOW( ), INTERVAL 90 DAY );
查询方式2
EXPLAIN SELECT
     * 
 FROM
     vehicle_info 
 WHERE
     DATEDIFF( annual_inspection_due_date, NOW( ) ) < 90 AND DATEDIFF( annual_inspection_due_date, NOW( ) ) >=0
索引分析
不加索引时
结果1

结果2
 加索引时
 加索引时
 
结果1

结果2
 索引分析
 索引分析
 
从四个结果看得出一下结论
1.不加索引,肯定都不走索引,废话
2.加索引时,结果1走了索引,查询结果30条数据,即rows = 30
rows含义:表示MySQL根据表统计信息及索引选用情况,估算的找到所需的记录所需要读取的行数
查询2是全表扫描。
三,结论
sql到底是否走索引,用explain调试,看结果,调整到最优



















