索引失效场景
联合索引不满足最左匹配原则
索引列参与了运算,会导致全表扫描,索引失效
索引列参使用了函数
模糊查询时(like语句),模糊匹配的占位符位于条件的左侧
like '%abc',like '%abc%' 都会导致失效,like 'abc%'不会
参数类型与字段类型不匹配,导致类型发生了隐式转换,索引失效
select * from t_user where id_no = 1002
id_no
字段类型为varchar,但在SQL语句中使用了int类型,导致全表扫描
查询条件使用or关键字,其中一个字段没有创建索引,则会导致整个查询语句索引失效; or两边为“>”和“<”范围查询时,索引失效。
select * from t_user where id = 2 or username = 'Tom2';
select * from t_user where id > 1 or id < 80
两列数据做比较,即便两列都创建了索引,索引也会失效
select * from t_user where id > age