1、id列 标识select所属的行。如果在语句中没有子查询或联和,那么只会是唯一的select,否则,内层的select会顺序编号。
2、select_type 列 显示对应行是简单还是复杂select
1)simple 意味着查询不包括子查询和union。如果查询有任何负责的子部分,则最外层部分标记primary。
2)subquery 包含在select列表中的子查询中的select 即不在from子句中。
3)derived 表示包含在from子句的子查询中的select,称其为“派生表”。
4)union 在union中的第二个和随后的select被标记为union。如果union被from子句中的子查询包含,那么第一个select会被标记为derived
5)union result 表示从union的匿名临时表检索结果的select被标记于union result
3、table列 该列显示对应行正在显示哪张表或该表的别名
4、type列
1)all 全表扫描
2)index 跟全表扫描一样,不过在扫描时是安装索引次序。它的主要优点是避免了排序;最大的缺点是要承担安索引次序读取整个表的开销。如果在extre列看到了“using index” 说明mysql正在使用覆盖索引,它至扫描索引的部分,而不是索引次序的每一行
3)rang 范围扫描 显而易见的范围扫描是带有between或where子句里带有>的查询
4)ref 索引访问,它返回所有匹配某个单个值的行
5)eq_ref 使用这种索引查找,mysql最多返回一条符合条件的记录,它在使用主键或唯一索引时看到
5、key列 决定采用那个索引来优化对该表的访问
6、ref 显示之前的表在key列记录的索引中查找值所用的列或常量
7、rows 估计为了找到所需的行而需要读取的行数
8、extra列 不适合在其他列显示的额外信息
1)using index 使用覆盖索引
2)using where 将在存储引擎检索行后再进行过滤
3)using temporary 对查询结果排序时会使用一个临时表
4)using filesort 对结果使用一个外部索引排序