select_type

常见的值以及描述如下

描述
SIMPLE 简单的SELECT语句(不包括UNION操作或子查询操作)
PRIMARY 查询中最外层的SELECT(如两表做UNION或者存在子查询的外层的表操作为PRIMARY,内层的操作为UNION)
UNION UNION操作中,查询中处于内层的SELECT,即被union的SELECT
SUBQUERY 子查询中的SELECT
DERIVED 表示包含在 From 子句中的 Select 查询
UNION RESULT union的结果,此时id为NULL

table

涉及的表

type(重要)

这列很重要,显示了连接使用哪种类型,有无使用索引, 常见的值从最好到最差如下 system > const > eq_ref > ref > range > index > all
各值的描述如下

描述
system 表只有一行,MyISAM引擎所有
const 常量连接,表最多只有一行匹配,通常用于主键或者唯一索引比较时,如:
select * from t_user where id = 1;
eq_ref 表关联查询时,对于前表的每一行,后表只有一行与之匹配。
(1) join查询
(2) 命中主键或者非空唯一索引
ref 只使用了索引的最左前缀或者使用的索引是非唯一索引、非主键索引
range between,in,>等都是典型的范围(range)查询
index 需要扫描索引上的全部数据,如:
select count(*) from t_user;
all 全表扫描

Extra(重要)

这一列也很重要,主要展示额外的信息说明,能够给出让我们深入理解执行计划进一步的细节信息
常见的值及描述如下

描述
Using filesort 当order by 无法利用索引完成排序时,优化器不得不选择合适的算法从内存或者磁盘进行排序
Using temporary 使用了临时表
Using index select后面的查询字段在索引中就可以取到,无需再回表了,即所谓的覆盖索引,这种查询性能很好
Using index condition mysql5.6之后引入了ICP(索引条件下推)
Using where Mysql 服务器在存储引擎检索行后再进行过滤