导航

MySQL EXPLAIN语句

Posted on 2017-06-30 16:44  gogntao  阅读(136)  评论(1)    收藏  举报
语法说明: explain + 数据库查询语句

一个典型的数据库执行计划的返回结果如下图所示

该返回结果的每个字段的含义如下表所示:

字段名 含义
id select查询的序列号,代表先后顺序
select_type 主要是区别普通查询和联合查询、子查询之类的复杂查询
table 显示这一行的数据是关于哪张表的
type 显示表之间的连接类型,由好到差:const > eq_reg > ref > range > index > all
possible_keys 显示可能应用在这张表中的索引
key 实际使用的索引,若为null,则没有使用索引
key_len 使用的索引的长度,在不损失精度的情况下,长度越短越好
ref 显示索引的哪一列被使用过,如果可能的话,是一个常数
rows MYSQL认为必须检查的用来返回请求数据的行数
Extra 关于MySQL如何解析查询的额外信息

Extra列返回的描述符的意义

字段内容 代表含义
Distinct 一旦MySQL找到了与行匹配的行,就不在继续搜索了
Not exists MySQL优化了LFET JOIN,一旦它找到了匹配LEFT JOIN标准的行,就停止搜索
Range Checked for each Record 没有找到理想的索引
Using filesort 看到这个的时候,查询就需要优化了,MySQL采取了外排序,速度很慢
Using index 这发生在对表的全部的请求列都是同一个索引的部分的时候
Using temporary 这里,MYSQL需要创建一个临时表来存储结果,会占用额外空间
Where used 使用了WHERE从句来限制哪些行将与下一张表匹配或者是返回给用户。如果不想返回表中的全部行,并且连接类型ALL或index,这就会发生,或者是查询有问题不同连接类型的解释(按照效率高低的顺序排序)