表:
数据:
例如:explain select * from t where a = 2;
各个字段解释:
select_type
表示查询中每个 select 子句的类型(简单 OR 复杂)
对表的访问方式,表示 MySQL 在表中找到所需行的方式,又称访问类型
Extra
其他的额外的执行计划信息,在该列展示:
-
Using index:该值表示相应的 SELECT 操作中使用了覆盖索引(Covering Index)
-
Using index condition:第一种情况是搜索条件中虽然出现了索引列,但是有部分条件无法使用索引,会根据能用索引的条件先搜索一遍再匹配无法使用索引的条件,回表查询数据;第二种是使用了索引下推
-
Using where:表示存储引擎收到记录后进行后过滤(Post-filter),如果查询操作未能使用索引,Using where 的作用是提醒我们 MySQL 将用 where 子句来过滤结果集,即需要回表查询
-
Using temporary:表示 MySQL 需要使用临时表来存储结果集,常见于排序和分组查询
-
Using filesort:对数据使用外部排序算法,将取得的数据在内存中进行排序,这种无法利用索引完成的排序操作称为文件排序
-
Using join buffer:说明在获取连接条件时没有使用索引,并且需要连接缓冲区来存储中间结果
-
Impossible where:说明 where 语句会导致没有符合条件的行,通过收集统计信息不可能存在结果
-
Select tables optimized away:说明仅通过使用索引,优化器可能仅从聚合函数结果中返回一行
-
No tables used:Query 语句中使用 from dual 或不含任何 from 子句