mysql in const range,mysql 之 坑死不偿命 (大神请出门左转)

我们用explain 看一下查询语句

key

显示了MySQL决定采用哪个索引来优化对该表的访问

type

显示的是访问类型,是较为重要的一个指标,结果值从好到坏依次是:

system > const > eq_ref > ref >fulltext > ref_or_null > index_merge > unique_subquery >index_subquery > range > index > ALL

一般来说,得保证查询至少达到range级别,最好能达到ref。

这列很重要,显示了连接使用了哪种类别,有无使用索引。主要包括以下几种类型

1)、all

全表扫描,效果是最不理想的。

2)、const

const是在where条件以常量作为查询条件,最多只会有一条记录匹配,由于是常量,实际上只须要读一次。

3)、eq_ref

最多只会有一条匹配结果,一般是通过主键或唯一键索引来访问。一般会出现在连接查询的语句中。

4)、fulltext

进行全文索引检索。

5)、index

全索引扫描。MySQL在扫描表时按索引次序进行而不是行。

6)、index_merge

查询中同时使用两个(或更多)索引,然后对索引结果进行合并(merge),再读取表数据。

7)、index_subquery

子查询中的返回结果字段组合是一个索引(或索引组合),但不是一个主键或唯一索引。

8)、rang

索引范围扫描。一个有限制的索引扫描,它开始于索引里的某一点,返回匹配这个值域的行(显而易见的范围扫描.即带有BETWEEN或在WHERE子句中带有>的查询,当MySQL使用索引去查找一系列值的时候,如IN()和OR列表,也为显示的范围扫描)

9)、ref

也叫索引查找,他返回所有匹配某单个值的行,它可能会找到多个符合条件行。

10)、ref_or_null

与ref的唯一区别就是在使用索引引用的查询之外再增加一个空值的查询。

11)、system

系统表,表中只有一行数据;

12)、unique_subquery

子查询中的返回结果字段组合是主键或唯一约束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值