MySQL中使用索引一定有效吗?如何排查索引效果?

MySQL中使用索引一定有效吗?如何排查索引效果?

一、不一定一定有效,以下是索引失效的几种情况

  1. 使用了联合索引却不符合最左匹配原则
  2. like模糊匹配的随意使用,比如占位符放在最左端
  3. or的随意使用,当只有一个索引,or连接了两个条件,那么索引就失效了
  4. 将表中的两个不同字段进行比较,如 age > id
  5. 使用了order by,order by 后面如果不是主键或者覆盖索引,会导致不走索引
  6. 索引中使用了运算
  7. 索引中使用了函数
  8. 随意的字段类型的使用,比如varchar类型字段用int来给予条件,mysql内部会对其进行数据类型转换,这个过程会使用函数,索引会失效;还有就是不同编码表的联表查询也会导致隐式字符编码转换,也会使用函数,索引失效
  9. 不同参数也会导致索引失效,不同的参数会导致mysql评估成本不一致,有时候会选择索引,有时候会选择全表扫描,特别是在复杂查询的时候。

二、使用explain排查索引效果

  1. type:访问类型
    1. ALL :全表查询,没有使用索引
    2. index:全索引扫描,对覆盖索引的全扫描(全扫描二级索引)
    3. range:索引检索给定范围的行(通过索引快速扫描)
  2. key:使用的索引,会显示索引的名称,如果值是NULL,就表示没有使用索引
  3. rows:扫描的行数
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值