mysql explain字段意思解释

mysql explain字段意思解释

explain包含id、select_type、table、type、possible_keys、key、key_len、ref、rows、extra字段

 

id

id列的编号是select的序列号,有几个select就有几个id,并且id的顺序是按select出现的顺序增长的。

 

select_type

select_type表示对应行是简单还是复杂的查询。

1. simple:简单查询
2. primary:复杂查询中最外层的select
3. subquery:包含在select中的子查询(不在from子句中)
4. derived:包含在from子句中的子查询
5. union:在union中的第二个和随后的select
6. union result:从union临时表检索结果的select

 

table

这一列表示explain的一行正在访问哪张表。

 

type

这一列表示关联类型或访问类型,即mysql决定如何查找表中的行
性能优先级依次从最优到最差分别为:system>const>eq_ref>ref>fulltext>ref_or_null>index_merge>unique_subquery>index_subquery>range>index>all
1.null:mysql能够在优化阶段分解查询语句,在执行阶段用不着再访问表或索引。
2.const、system:mysql能对查询的某部分进行优化并将其转化成一个常量(可以看show warnings的结果)。 
3.eq_ref:primary key 或unique key索引的所有部分被连接使用,最多只会返回一条符合条件的记录。 
4.ref:相比eq_ref,不实用唯一索引,而是使用普通索引或者唯一性索引的部分前缀,索引要喝某个值相比较,可能会找到符合条件的行。
5.ref_or_null:类似ref,但是可以搜索值为null的行。
6.index_merge:表示使用了索引合并的优化方法。
7.range:范围扫描通常出现在in(),between,>,<,>=等操作中。
8.index:和all一样,不同就是mysql只需扫描索引树,这通常比all快一些。
9.all:全表扫描,意味着mysql需要从头到尾去查找所需要的行,通常情况下这需要增加索引来进行优化了。

 

possible_keys

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

 

key

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

 

key_len

这一列显示了mysql在索引里使用的字节数,通过这个值可以算出具体使用了索引中的那些列

 

ref

在key列记录的索引中,表查找值所用到的列或常量,常见的有:const,func,null,字段名

 

rows

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

extra

展示的是额外信息
1.distinct:一但mysql找到了与行相联合和匹配的行,就不再搜索了。
2.using index:命中普通索引树中的数据,不需要回表操作。(是性能高的表现)
   eg.select id,name from table where name='zhangsan'; //name是普通索引
3.using index condition:既命中索引树的数据,又要回表获取数据。
   eg.select id,name,sex from table where name='zhangsan'; //name是普通索引
3.using where:mysql服务器将在存储引擎检索行后再进行过滤。就是先读取整行数据,再按where条件进行检查,符合就留下,不符合就丢弃。
   eg.select * from table where name='zhangsan'; // 无索引
4.using temporary:mysql需要创建一张临时表来处理查询。出现这种情况一般是要进行优化的,首先是想到用索引来优化。
   eg.select name from table group by name; 
5.using join buffer(Block Nested Loop):表示需要嵌套计算,例如使用了left join
5.using filesort:mysql会对结果使用一个外部索引排序,而不是按索引次序从表里读取行。此时mysql会根据联接类型浏览所有符合条件的记录,
并保存排序关键字和行指针,然后排序关键字并按顺序检索行信息。这种情况下一般也是要考虑使用索引来优化的。
   eg.select * from table order by name;

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨润泽林

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值