什么是索引
要了解索引优化和索引失效的场景就要先了解什么是索引
索引是一种有序的存储结构,按照单个或者多个列的值进行排序,以提升搜索效率。
索引的类型
Sql索引优化共有以下几种方法
sql索引失效的场景
非最左匹配
最左匹配原则指的是,以最左边的为起点字段查询可以使用联合索引,否则将不能使用联合索引
错误模糊查询
模糊查询 like 的常见用法有 3 种:
而这 3 种模糊查询中只有第 1 种查询方式可以使用到索引
列运算
如果索引列使用了运算,那么索引也会失效
使用函数
查询列如果使用任意 MySQL 提供的函数就会导致索引失效
类型转换
如果索引列存在类型转换,那么也不会走索引,比如 address 为字符串类型,而查询的时候设置了 int 类型的值就会导致索引失效
使用 is not null
当在查询中使用了 is not null 也会导致索引失效,而 is null 则会正常触发索引的