Explain中的字段

这里写图片描述

1.id:操作表的顺序

根据id的值出现的情况不同,操作表的顺序或者执行select字句的顺序也会有所不同

id值出现的情况 执行的顺序
id值相同的时候 由上之下执行
id值不同的时候 id值越大越是先执行
id值有相同也有不同的时候 id值越大的先执行,id值相同的由上之下执行

2.select_type:查询的类型

出现的选项可能有

次序 select_type的值 说明
1 SIMPLE 简单查询(不包括子查询或者UNION)
2 PRIMARY 主查询(查询中包含了复杂查询,在外层的查询就会标记为主查询)
3 SUBQUERY 子查询(select或者where列表中包含了子查询)
4 DERIVE 有临时表产生
5 UNION 如果第二个select出现在union之后,则标记为UNIION;如果union包含在from子句的子查询当中,最外层标记为DERIVE
6 UNION RESULT 从UNION表中获取的结果的SELECT子句

3.table:显示当前的一行数据是关于哪一个表的


4.partitions


5.type:扫描表的类型
性能效果排序如下,ALL表示这全表扫描
system>const>eq_ref_ref>range>index>ALL

次序 type的值 说明
1 system 当表只有一行记录时,这是const的特例(没有实际意义)
2 const 表示通过索引一次就找到了(单表单行,也没有实际意义)
3 eq_ref 唯一性全表扫描,对于每个索引键,表中都是一条记录与之匹配。常见于主键或者唯一索引扫描
4 ref 非唯一性索引扫描,他可能会找到多个符合条件的行
5 range 只检索给定范围的行,使用一个索引来选择行。
6 index 遍历索引树
7 ALL 遍历全表

6.possible_keys:显示可能会被应用的索引


7.key:实际上使用到的索引

  1. 如果没有则为null
  2. 如果使用了覆盖索引,则显示覆盖索引

7.key_len:索引使用的字节数


8.ref:索引的引用


9.rows:需要读取的行数

根据表的统计信息和索引的使用来大致估算出找到记录所需要读取的行数。


10.filtered


11.Extra:额外信息

次序 type的值 说明
1 Using filesort 文件内排序(Mysql会对数据使用一个外部的索引进行了排序,而不是按照表内的索引顺序进行读取)
2 Using temporay 产生了临时表(使用了临时表保存临时的数据,常见于order by 和 group by
3 Using index 使用了覆盖索引
4 Using where 使用了where进行了过滤
5 using join buffer 使用了连接缓存
6 impossible where where子句的值总是false,不能用来获取任何的元组
7 。。 。。。

你可能感兴趣的:(数据库)