MySQL执行计划

执行计划

id

表示select查询的序列编号,即在查询中执行select语句或操作表的顺序,查询出来的id有两种情况,可同时存在

id相同,执行顺序为从上到下

select_type

查询的类型,主要用于区分普通查询、联合查询、子查询等不同的查询方式,有以下几种

  1. SIMPLE:简单的SELECT查询,不包含子查询或UNION

  2. PRIMARY:查询中包含子查询等复杂查询时,外层查询则被标记为PRIMARY

  3. SUBQUERY:在SELECT或WHERE中包含子查询

  4. DERIVED:在FROM中包含了子查询

  5. UNION:在关键字UNION后的查询

  6. UNION RESULT:从UNION表中获得结果的查询

table

表明数据是从那张表中查询的,关联了哪些表

partitions

表示查找的是哪个分区的数据

type

表示查询使用了哪种类型,具体类型有

system:表只有一行记录,等同于系统表,这是const类型的特例,基本不会出现
const:表示通过索引一次就找到了匹配的数据,例如通过主键匹配的条件查询
eq_ref: 唯一性索引扫描,对每个索引键表中只有一条相对应的记录,也就是主键或唯一索引和他们对应的数据这样的情况
ref: 非唯一性索引扫描,即索引查找出对应多个符合条件的数据
range: 只检索给定范围的行,使用一个索引来选择行,一般是between、<、>、in等范围查询
index: 从索引中读取全表
all:从硬盘中读取全表,即全数据读取
查询效率:从优到劣顺序排列

possible_keys

表示可能使用到的索引,通常如果查询的字段上有索引就会显示,虽然不一定会使用到

key

实际使用到的索引,如果在查询中使用到了覆盖索引,则该索引会和查询的select字段重叠

##key_le n
索引的长度,越短越好,该值为表计算估计出的最大长度,而不是实际使用长度

ref

显示索引的哪一列被使用到了

rows

预计找出匹配数据所需要读取的行数

Extra

额外的事务,是比较重要的用于分析检索效率的信息,包含以下:

Using filesort:MySQL使用了一个外部的索引排序:“文件排序”,表示无法使用表内的索引顺序进行读取
Using temporary:使用了临时表,该信息通常在使用了排序或分组查询时出现,MySQL使用了临时表来存储order by和group by需要进行排序的查询结果
Using index:在select操作中使用了覆盖索引,即只从索引中就可以获得数据,不必读取数据行。覆盖索引:是建立在原有索引基础上的新的索引。
Using where:使用了where过滤,当同时出现Using index时,表示索引被用于读取索引键值的操作,索引键即为where的过滤条件
using join buffer:使用了连接缓存
impossible where:where子句的值为false,不能被用于查找数据
select tables optimized away:表示索引在没有group by的情况下,在查询阶段就优化了cont(*)等函数操作
distinct:优化了distinct操作,匹配到第一组所需的数据后停止查找相同数据的操作

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