我们已经准备好了,你呢?

2024我们与您携手共赢,为您的企业形象保驾护航!

很多人对MySQL中的IN是否使用索引感到困惑,一开始可能会说使用索引,但后来发现索引无效或者没有用到。那么,IN到底有没有使用索引呢?

首先,你可以使用以下方式查询 MySQL 索引问题

:命令获取语句的执行计划,通过该执行计划我们可以知道以下信息:读取表的顺序,读取操作的数据类型,可以使用哪些索引,实际使用了哪些索引,表之间的引用,优化器查询每个表的多少行等等。

结果中的type字段可以清楚的表明该指数是否用于提现。

常见扫描方式:

其中:MySQL索引扫描方式从快到慢依次为:

> const > > ref > 范围 > 索引 > 全部

以下显示查询sql和结果

当 IN 只有一个主键时:

mysql in or 索引_索引MySQL类型_索引mysql详解

结果:type:const,使用主键索引。

当 IN 有多个主键时:

索引mysql详解_mysql in or 索引_索引MySQL类型

结果:type:range,此时仍然使用索引,但是效率降低了。

当IN范围继续扩大时:

索引mysql详解_mysql in or 索引_索引MySQL类型

结果:类型:all,没有使用索引,但是进行了全表扫描。

结论:IN肯定会使用索引,但是当IN的取值范围很大的时候,索引会失效,会进行全表扫描。

原因是:MySQL有一个阈值,该阈值决定了索引查询的使用率低于阈值,而超过阈值就会退化,优化器会选择深入索引。

MySQL 优化器决定使用索引来执行查询仅仅是因为使用索引的成本足够低。

二维码
扫一扫在手机端查看

本文链接:https://by928.com/4721.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线