14. 什么情况下索引会失效 ?
MySQL 索引通常是被用于提高 WHERE 条件的数据行匹配时的搜索速度,编写合理化的SQL能够提高SQL的执行效率
- 不要在列上使用函数和进行运算
- 不要在列上使用函数,这将导致索引失效而进行全表扫描。
- 尽量避免使用 != 或 not in或 <> 等否定操作符
- 尽量避免使用 or 来连接条件
- 多个单列索引并不是最佳选择,建立组合索引代替多个单列索引, 可以避免回表查询
- 查询中的某个列有范围查询,则其右边所有列都无法使用索引优化查找
- 索引不会包含有NULL值的列
- 当查询条件左右两侧类型不匹配的时候会发生隐式转换,隐式转换带来的影响就是可能导致索引失效而进行全表扫描。
- like 语句的索引失效问题like 的方式进行查询,在 like “value%” 可以使用索引,但是对于 like “%value%” 这样的方式,执行全表查询