mysql 索引失效有哪些
InnoDB存储引擎根据索引类型不同,分为聚簇索引和二级索引
聚簇索引:叶子节点存放的是实际数据
二级索引:存放的是主键值,不是实际数据
1.对索引使用左或者左右模糊匹配
select * from t_user where name like '%林‘;
因为B+树是按照索引值有序排列存储的,只能根据前缀进行比较
查询结果可能是哪个索引值开始比较,于是就只能通过全表扫描的方式查询
2.对索引使用函数
索引保存的索引的是索引字段的原始值,而不是经过函数计算后的值
3.对索引进行表达式计算
4.对索引隐式类型转换
Mysql在遇到字符串和数字比较的时候,会自动把字符串转为数字,然后再进行比较
5.联合索引非最左匹配
6.WHERE子句中的or
如果在or前的条件列是索引列,而在or后的条件列不是索引列,那么索引会失效