explain输出格式

作者: 疯狂小兵 | 2017-09-06 | 阅读
「编辑」 「本文源码」

EXPLAIN语句提供了mysql怎么执行语句的相关信息。EXPLAIN 可以描述select,insert,update,delete,replace等语句的执行信息。表8.1

对于select语句使用到的每一张表,explain都会返回一行信息,而且是按照mysql在处理语句时读取的顺序列出这些表。 mysql使用内循环join的方法来解决所有的join操作,这意味着mysql从第一张表中读取一行数据,然后在第二张表中读取匹配的行,然后第三张,以此类推。当所有的表都被执行完时,mysql通过表列表输出选定的列和回溯,直到找到有更多匹配行的表。然后下一行从当前表中读取然后继续执行后面的表。

explain输出会包含分区信息。此外,对于select语句,explain会生成扩展信息,可以在explain之后显示show warnings(请看Section 8.8.3, “Extended EXPLAIN Output Format”)。

注意
在早期mysql版本总,分区和扩展信息是使用explain partitionyu'fayufaexplain extended产生的。那些语法因为向后兼容性仍然可用,但是分区和扩展输出默认是不开启的,所以partitionsextended关键字是多余的并且过期了。他们的使用会导致警告并且在未来的mysql版本中会从explain语法中移除。

你不能在同一个explain语句中同时使用partitionsextended关键字。另外,这两个关键字的任何一个也不能和format操作一起使用。

explain输出列

该节描述了使用explain的输出列,后面的章节会介绍typeextra列额外的信息。

来自explain的每个输出行代表一张表的信息。每行包含表8.1中的值的概要,并且在该表格后会有更详细的描述。表格的第一列是列明,第二列是提供的与使用format=json等价的属性名显示

表8.1

列名 json名 意义
id select_id select标识符
select_type NONE SELECT的类型
table table_name 输出行的表
partitions partitions 匹配的分区
type access_type join类型
possible_keys possible_keys 可能选择的索引
key key 真实选择的索引
key_len key_length 选择的key的长度
ref ref 列在索引上的参照
rows rows 被检查行的估值
filtered filtered 通过表的条件过滤的行的百分比
Extra None 额外信息

注意
为null的JSON属性在json格式化的explain输出中不显示。

  • id(JSON name:select_id)

    select的标识符。这是查询中select的序列号。如果该行参照其他行的联合结果,该值可以为NULL。这种情况系,table列显示像<union M,N>这样的值来表示该行的id值是M和N的并集

  • select_type(JSON 那么:none)

    select的类型,可以是下标中显示的任何一个。JSON格式的explain将select类型显示为query_block的属性,除非是SIMPLEPRIMARY

    select_type的值 JSON名 意义
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
  • table

  • partitions

  • type

  • possible_keys

  • key

  • key_len

  • ref

  • rows

  • filtered

  • Extra


版权声明:本文由 在 2017年09月06日发表。本文采用CC BY-NC-SA 4.0许可协议,非商业转载请注明出处,不得用于商业目的。
文章题目及链接:《explain输出格式》




  相关文章:

「游客及非Github用户留言」:

「Github登录用户留言」:

TOP