执行explain会返回那些字段(加粗标红为主要关注字段)?
1、id:执行计划中每个操作的唯一标识,多表联查的时候会出现多条数据id是一样的
2、select_type:查询类型,常见类型有:SIMPLE、PRIMARY、UNION、SUBQUERY
3、table:涉及到的表
4、partitions:涉及到的分区
5、type:查询时使用到的索引类型:system、const、eq_ref、ref、range、index、ALL
6、possible_keys:可能被查询优化器使用到的索引
7、key:查询优化器选择的索引
8、key_len:索引长度
9、ref:索引的那一列被使用
10、rows:需要扫描的行数,就是此次查询需要扫描多少行得到结果
11、filtered:按表条件过滤的行百分比
12、Extra :额外信息
三个关键字段解析:
type索引类型解析:
1、system:系统表
2、const:常数索引
3、eq_ref:唯一索引,只扫描索引树种的一个一个匹配行
4、ref:非唯一索引,只扫描索引树种一部分数据来查找匹配行
5、range:范围索引,只扫描索引树种的一个范围来查找匹配的行
6、index:全索引扫描,遍历索引树
7、ALL:全表扫描
按照序号排列,效率由快到慢
key:
实际使用到的索引,正常使用到了索引,则显示索引名称
Extra:
Using where:
表示使用了where过滤,过滤条件字段无索引。
Using index:
使用了覆盖索引,只需要扫描索引,无需回表检索
Using where;Using index
查询的列被索引覆盖,where筛选条件是索引列之一
Using temporary:
创建了临时表用来存储结果,排序或者分组的情况下
Using filesort:
表示没有使用索引的排序