where条件下索引失效
- 使用了关键字
or
- 索引字段使用了关键字
like
,且以 %开头去匹配数据 - 索引字段使用了负向查询,如:
!=
、<>
、not in
- 索引字段使用了表达式/运算,如:
select name, age from user where age + 1 = 18;
- 索引字段发生了类型的(隐式)转换,如:使用
字符串去匹配 int 类型
的索引字段
其他
- 复合索引中,没有满足最左前缀原则,即匹配时需能匹配最左边开始的索引列的值
- 索引字段的数据重复性比较强,也就意味着即使使用索引,对效率的提升也不大
- MySQL优化器认为全表扫描更快时,如:数据少的情况下