mysql索引失效的几种情况

本文详细探讨了MySQL中导致索引失效的九种常见原因,包括通配符搜索、isnull与isnotnull的区别、不等于运算、字符集不一、关联查询、OR操作等,并提供了优化建议和实战案例。了解这些规则有助于避免查询性能瓶颈。
摘要由CSDN通过智能技术生成
  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索引失效场景,别再踩坑了! - 知乎

欢迎补充!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值