explain查询字段解释

1.id

  • id相同的情况下:表示没有执行的先后顺序
  • id不同的时候:id数值越大越先执行
  • id有相同和 不同的:相同的查询为一组,同上,id越大越先执行

2.select_type

select-type 含义
SIMPLE 简单的select查询,查询中不包含子查询或者UNION
PRIMARY 查询中若包含任何复杂的子查询,最外层查询标记为该标识
SUBQUERY 在SELECT或WHERE列表中包含子查询
DERIVED 在FROM列表中包含的子查询,被标记为DERIVED MYSQL会地柜执行这些子查询,把结果集放在临时表中
UNION 若第二个SELECT出现在UNION之后,则标记为UNION;若UNION包含在FROM子句的子查询中,外层SELECT将被标记为:DERIVED
UINON RESULT 从UNION表中获取结果的SELECT

3.Type

Type 含义
NULL MySQL不访问任何表,索引,直接返回结果
system 表只有一行记录(等于系统表),这是const类型的特例,一般不会出现
const 表示通过索引一次就找到了,const用于比较pimary key 或者 unique索引。因为只匹配一行数据,所以很快;
eq_ref 类似ref,区别在于使用的是唯一索引,使用主键的关联查询,关联查询出的记录只有一条,常见于主键或唯一索引扫描
ref 非唯一性索引扫描,返回匹配某个单独值的所有行,本质上也是一种索引访问,返回所有非匹配某个单独值的所有行
range 只检索给定返回的行,使用一个索引来选择行。where 之后出现between,<,>,in等操作
index index与ALL的区别为index类型只是遍历了索引输,通常比ALL快,ALL是遍历数据文件
ALL 将遍历全表以找到匹配的行

4.table

数据是哪一个表的数据

5.explain之key

  1. possible_keys:显示可能应用在这张表的索引,一个或多个。
  2. key:实际使用的索引,若为null,表示未走索引
  3. key_len:表示索引中使用的字节数,该值为索引字段最大可能长度,并非实际使用长度,在不损失精确性的前提下,长度越短越好

6. rows

扫描行的数量;

7.extra

extra 含义
using filesort 说明mysql会对数据使用一个外部的索引排序,而不是按照表内的索引顺序进行读取,称为文件排序
using temporary 使用临时表保存中间结果,Mysql 在对查询结果排序时使用临时表,常见于 order bygroup by
using index 表示相应的select 操作使用了覆盖索引,避免访问表的数据行;
上一篇:Mysql Explain详解


下一篇:mysql索引最左匹配原则的理解