MySQL的EXPLAIN的各项值

独自空忆成欢 提交于 2020-02-29 17:55:07


1、id

每个被独立执行的操作的标识,表示对象被操作的顺序;id值大,先被执行;如果相同,执行顺序从上到下。

若没有子查询和联合查询,id则都是1。Mysql会按照id从大到小的顺序执行query,在id相同的情况下,则从上到下执行。


2、select_type

查询中每个select子句的类型

(1)SIMPLE  (2)PRIMARY/UNION  (3)DEPENDENT UNION/UNIOIN RESULT  (4)SUBQUERY/DEPENDENT SUBQUERY  (5)DERIVED/MATERIALIZED  (6)UNCACHEABLE SUBQUERY/UNCACHEABLE UNION



3、table

名字,被操作的对象名称,通常是表名,或者表的别名,或者一个为查询产生临时表的标示符(如派生表、子查询、集合)。


4、type

代表查询执行计划中表使用的连接方式。连接操作的类型。

(1)SYSTEM (2)CONST (3)EQ_REF  (4)REF  (5)REF_OR_NULL (6)RANGE  (7)INDEX_SCAN  (8)ALL  (9)UNIQUE_SUBQUERY  (10)INDEX_SUBQUERY  (11)INDEX_MERGE  (12)FT

system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL

一般来说,得保证查询至少达到range级别,最好能达到ref。


5、partitions

匹配的分区信息(对于非分区表值为NULL)。


6、possible_keys

备选的索引(列出可能被使用到的索引)


7、key

经优化器选定的索引;常用ANALYZE TABLE命令,可以使优化器正确地选择索引。如果没有选择索引,键是NULL。要想强制MySQL使用或忽视possible_keys列中的索引,在查询中使用FORCE INDEX、USE INDEX或者IGNORE INDEX。


8、key_len

被优化器选定的索引键的长度,单位是字节。


9、ref

表示本行被操作的对象的参照对象(被参照的对象可能是一个常量用const表示,也可能是其他表的key指向的对象)。


10、rows

查询执行所扫描的元组个数(对于InnoDB,此值是估计值)。


11、filtered

按照条件表上数据被过滤的元组个数的百分比,rows×filtered/100可以求出过滤后的元组数即实际的元组数。


12、Extra

(1)using where  (2)using temporary  (3)using filesort  (4)using index (5)using join buffer

(6)impossible where  (7)select tables optimized away  (8)distinct

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!