范围查询一定会让索引失效吗

本文讨论了SQL查询中,如何在IN、NOTIN和LIKE操作符使用索引的情况,指出范围查询可能导致索引失效,特别强调了LIKE查询中百分号位置对索引利用的影响。还提到了全表扫描、索引覆盖和查询类型的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上课上课

在这里插入图片描述

先总结结论

  1. in 查询会走索引的范围查询
  2. 不确定的范围查询会导致索引失效 例如 not in 因为这些值可能不是有序的。在这种情况下会导致索引失效
  3. like查询百分号在左不走索引
  4. like查询百分号在右走索引
    具体可以看执行结果

in查询走了创建的索引

在这里插入图片描述

not in不走索引,可以看到索引是存在的,但是没有走索引而是全表查询,执行也是花了十多秒在这里插入图片描述

like查询分情况, 百分号在尾部会走索引,原因是索引是从左至右,如果在左侧则不走索引

百分号在左侧情况为全表查询没有走索引

在这里插入图片描述

百分号在右侧情况走了主键索引

在这里插入图片描述

课外知识

type=ALL:全表扫描,遍历整张表去查询匹配的结果,不走索引。
type=index:使用索引覆盖,仅仅扫描索引树,比ALL要快。
type=range:使用索引进行范围查询时就会用到range访问方法。
key:实际使用到的索引,如果为NULL就是没使用索引。

下课休息在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值