mysql索引失效的几种情况

  1. like以通配符%开头索引失效(最左匹配原则)
  2. is null可以使用索引,is not null无法使用索引
  3. 不等于(!= 或者<>)导致索引失效
  4. 数据库和表的字符集不统一
  5. 关联查询字段的⻓度不一样
  6. OR 前后只要存在非索引的列,都会导致索引失效
  7. 计算、函数、类型转换导致索引失效
  8. 主键插入顺序
  9. 组合索引,不是使用第一列索引,索引失效
  10. 范围条件右边的列索引失效​​​​​​​
    explain select * from student_info where name='11111' and course_id>1 and class_id=1;
    

    class_id的索引用不到

  11. 两列数据做比较,即便两列都创建了索引,索引也会失效
    explain select * from t_user where id > age;
  12. 查询条件使用not in时,如果是主键则走索引,如果是普通索引,则索引失效
  13. 当查询条件涉及到order by、limit等条件时,是否走索引情况比较复杂,而且与Mysql版本有关,通常普通索引,如果未使用limit,则不会走索引。order by多个索引字段时,可能不会走索引。其他情况,建议在使用时进行expain验证
  14. 当全表扫描速度比索引速度快时,mysql会使用全表扫描,此时索引失效

参考资料:

mysql索引失效的常见9种原因详解_数据库开发_book多得-DevPress官方社区

15个必知的Mysql索引失效场景,别再踩坑了! - 知乎

欢迎补充!

你可能感兴趣的:(mysql,mysql,数据库)