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
- possible_keys:显示可能应用在这张表的索引,一个或多个。
- key:实际使用的索引,若为null,表示未走索引
- key_len:表示索引中使用的字节数,该值为索引字段最大可能长度,并非实际使用长度,在不损失精确性的前提下,长度越短越好
6. rows
扫描行的数量;
7.extra
extra | 含义 |
---|---|
using filesort | 说明mysql会对数据使用一个外部的索引排序,而不是按照表内的索引顺序进行读取,称为文件排序 |
using temporary | 使用临时表保存中间结果,Mysql 在对查询结果排序时使用临时表,常见于 order by 和 group by |
using index | 表示相应的select 操作使用了覆盖索引,避免访问表的数据行; |