EXPLAIN 参数说明

EXPLAIN

explain 用来查看sql语句执行时的相关参数信息 从而分析sql的性能

-- 通过 EXPLAIN + SQL语句 ( 来查看sql执行时的相关信息 )
EXPLAIN SELECT * FROM x_test WHERE x_name = 'mashen';

结果:

idselect_typetablepartitionstypepossible_keyskeyken_lenrefrowsfilteredExtra
1SIMPLEx_nameNullrefx_namex_name30const3100Using where

字段解释

id:
sql语句的标识符 如果为Null 则表示这个sql是其他行的联合结果

select_type:

select_type 值说明
SIMPLE简单的查询(不包含子查询和union)
PRIMARY包含子查询或union最外层部分为PRIMARY
UNION在union第2个或者后面的sql为UNION 第一个为PRIMARY
DEPENDENT UNION使用UNION并使第2个或后面的查询同时依赖于外部查询
UNION RESULT在匿名临时表里检索
SUBQUERY子查询中第一个SELECT
DEPENDENT SUBQUERY子查询中第一个SELECT 同时依赖于外部查询
DERIVED子查询产生的临时表 FROM的表

table:
访问的表名称

partitions:
查询匹配的分区 NULL表示未进行分区

type:
访问类型

type 值说明效率
ALL全表扫描 ( 最坏情况 )最慢
index和ALL一样只是通过索引树扫描很慢
range范围扫描 当使用> < IN BETWEEN 这种范围表达式时一般
ref通过索引访问( 高效的 )快速
eq_ref充分使用索引 ( 比ref还高效 )很快
const只有一个匹配的行所以该行的列中的值可以被其他优化器视为常量所以非常快非常快
system该表只有一行(=系统表)这是const的特殊情况最快

possible_keys:
当前有可能会用到的索引 ( 并非实际用到的 )

key:
实际用到的索引

ken_len:
查询所使用索引的长度

ref:
使用哪些列或常量和key一起去匹配结果行

rows:
查询结果是必须要检查的行数

filtered:
在表中已条件过滤数据的百分比

Extra:
Extra

MySQL 5.7 参考手册 – EXPLAIN

    原文作者:mashen
    原文地址: https://www.jianshu.com/p/30bea758b897
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞