mysql explain输出格式

一.使用方法

格式:explain + select查询语句

eg:explain select * from user;

二.输出列

含义 备注
id 查询标识符id  
select_type select类型  
table 输出行的表  
partitions 匹配的分区  
type 连接类型 从好到坏排序:system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL
possible_keys 可供选择的索引  
key 实际选择的索引  
key_len 所选键的长度 越短越好
ref 索引的哪一列被使用了  
rows 估计也检查的行数  
filtered 按表条件过滤的行的百分比 最大为100,这意味着不会对行进行过滤。rows*filtered表示与下表连接的行数。越小越好
Extra 附加信息  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

type

含义 备注
system 该表只有一行  
const(常数) 该表最多只有一个匹配行,在查询开头读取。因为只有这一行,所以优化器的其余部分可以将此行中的列视为常量。const非常快,因为它们只读一次  
eq_ref 唯一性索引扫描,对于每个索引键,表中都只有一条记录与其匹配。常见于主键或唯一索引扫描  
ref(参考) 非唯一索引扫描  
fulltext 全文索引检索,要注意,全文索引的优先级很高,若全文索引和普通索引同时存在时,mysql不管代价,优先选择使用全文索引  
ref_or_null 与ref方法类似,只是增加了null值的比较。  
index_merge 表示查询使用了两个以上的索引,最后取交集或者并集,常见and ,or的条件使用了不同的索引.效率不是很高 关键字:索引合并  
unique_subquery 用于where中的in形式子查询,子查询返回不重复值唯一值  
index_subquery 用于in形式子查询使用到了辅助索引或者in常数列表,子查询可能返回重复值,可以使用索引将子查询去重。  
range(范围) 仅检索给定范围内的行,使用索引选择行。key列显示使用了哪个索引,一般就是在你的where语句中出现了between、<、>、in等的查询,这种范围扫描索引扫描比全表扫描要好,因为它只需要开始于索引的某一点,而结束于另一点,不会扫描全部索引。  
index(指数) 该联接类型与ALL相同,除了只有索引树被扫描。这通常比ALL快,因为索引文件通常比数据文件小。查询只使用作为单索引一部分的列时,MySQL可以使用该联接类型。  
ALL(全部) 对于每个来自于先前的表的行组合,进行完整的表扫描  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Extra

含义

备注

Distinct 一旦MYSQL找到了与行相联合匹配的行,就不再搜索了  
Not exists MYSQL优化了LEFT JOIN,一旦它找到了匹配LEFT JOIN标准的行,就不再搜索了  
using filesort  常见于order by 字段 无法走索引造成,文件排序。看到这个的时候,查询就需要优化了。MYSQL需要进行额外的步骤来发现如何对返回的行排序。它根据连接类型以及存储排序键值和匹配条件的全部行的行指针来排序全部行。需要注意优化,复杂条件可以选择建立联合索引进行优化。  
using join buffer size 常见于join连接,并且连接字段无法走索引时造成,缓存存储记录,BML优化,需要注意优化  
using tempoary MYSQL需要创建一个临时表来存储结果,这通常发生在对不同的列集进行ORDER BY上,而不是GROUP BY上,需要注意优化,需要注意当应用到索引时,不一定出现  
using index  覆盖索引,索引列可以覆盖所有的查询字段,不用回表读取数据文件,代表最优  
using where WHERE 子句用于限制哪一个行匹配下一个表或发送到客户。需要回表操作,会增加IO问题,出现的情况特征
    1 select查询的字段有非辅助索引和主键索引的其他值
    2 select查询的条件有非辅助索引和主键索引的其他值 
    注意点 
   1 using where单独出现情况需要回表
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2019-05-21 15:06  刘尊礼  阅读(314)  评论(0)    收藏  举报