进学阁

业精于勤荒于嬉,行成于思毁于随

0%

索引失效场景

  1. 没有遵从最左原则:因为常用的索引是B+树结构的,而B+树是有序的,而这个有序是根据索引最左边的字段排序的,所以相对的组合索引中其他的字段并不是有序的
  2. 范围查询放在最后(这里需要注意并不是在写语句的时候讲范围查询放在最后,而是将索引字段中可能出现范围查询的字段放在最后)
  3. 使用select from table 聚合索引和非聚合索引的差距就在于聚合索引的根保存的是完整的数据,而非聚合索引保存的是索引的值+聚合索引的Key,所以这里就引出了覆盖索引的概念,当你搜索的值都是索引列,就会用到覆盖索引,直接返回结果,不用再使用聚合索引的key去回表查询,效率就会有所提高。select * 大概率是要回表的。
  4. 索引列上有计算。+ - 等
  5. 索引列上使用了函数 sum cover
  6. 索引列是字符串的搜索的时候没有加’’ 比如 123 - ‘123’
  7. 在不可为空列中使用is null 和 is not null
  8. like 左边有%
  9. or两边的列不一致会导致索引实现 可以使用union