mysql查询序列_MySQL执行计划的那些浅知识

11001993e928b59a7530360aeda8c513.png点击上方蓝字了解更多精彩 184eb5f078cd723b28dd502718866a3d.png EXPLAIN  查看执行计划

select 、update、insert into、 delete等语句均被支持

51df573d4acfbc49075edee4d3381dff.png

id 列

代表执行语句的序列,通常有几个操作关键词(select 、update、insert into、 delete)就会有几个序列.

id列值越大执行优先级越高,id相同则从上往下执行,id为NULL最后执行

* 关联查询时,记录数取决于关联的表数,但id值相同

select_type 列

这个就比较多了,贴一张官方文档中的图

6a2be6d5c589eb9e67198227a6e9394c.png

(官方文档:https://dev.mysql.com/doc/refman/5.7/en/explain-output.html#explain_select_type)

个人感觉大致知道什么意思就可以了?

table 列

毋庸置疑,这个就是我们正在访问的表的意思了

* 当包含子查询和union时,会略有不同

如 ,表示当前查询依赖 id=N 的查询;

,1和2表示参与 union 的 select 行id

...

possible_keys 和 key 列

possible_keys列显示查询可能使用哪些索引来查找

key列显示mysql实际采用哪个索引来优化对该表的访问

key_len 列

显示了mysql在索引里使用的字节数

ref 列

这一列显示了在key列记录的索引中,表查找值所用到的列或常量。常见的有:const(常量),字段名...

rows 列

这一列是mysql估计要读取并检测的行数,注意这个不是结果集里的行数

  • 如果查询优化器决定使用全表扫描的方式对某个表执行查询时,执行计划的rows列就代表预计需要扫描的行数

  • 如果使用索引来执行查询时,执行计划的rows列就代表预计扫描的索引记录行数

filtered 列

按表条件过滤的行百分比

type 列

表示关联类型或访问类型

从最优到最差分别为:system > const > eq_ref > ref > range > index > ALL

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

NULL

mysql能够在优化阶段分解查询语句,在执行阶段用不着再访问表或索引

const

表中最多有一个匹配行,如where条件为表id时

eq_ref

表关联查询且用到索引时会出现

ref

假如对a表中的key1字段建立普通索引,当通过key1='a'的where条件查询时,可能会出现ref

range

通常出现在 in(), between ,> ,= 等操作中

index

虽然走了索引,但是几乎走了全部索引时出现该值,换言之,我们的索引建立的没有太大意义,区分度不是很好

ALL

全表扫描

extra 列

用来说明一些额外信息

Using index 

查询的列被索引覆盖,是性能高的表现  

Using where 

全表扫描,where条件中没有索引,需要我们建立索引  

NULL 

查询的列未被索引覆盖  

Using index condition 

与Using where类似,查询的列不完全被索引覆盖 

Using join buffer (Block Nested Loop) 在连接查询执行过程中,MySQL分配一块名叫join buffer的内存块来加快查询速度

73c747c4da2dae23c469cfcaf3d79f4e.gif
  • 官方文档:https://dev.mysql.com/doc/refman/5.7/en/using-explain.html

  • 封面图片来源:https://www.pexels.com/  作者:Karolina

END

4a14de7280dec32e7c58b8218f094930.png

(此图修改自网络)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值