mysql执行计划字段解释

2018-12-19  本文已影响0人  犄角芝士

一、mysql执行计划表头

id | select_type |table | type | possible_keys | key | key_len | ref | rows | Extra

其中最重要的字段为:id、type、key、rows、Extra

二、各个字段的解释

id

select查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序。id相同时顺序由上到下,id顺序不同时值大的优先。

select_type

查询的类型,主要是用于区分普通查询、联合查询、子查询等复杂的查询。

table

显示这一行的数据是关于哪张表的。

type

访问类型,sql查询优化中一个很重要的指标,结果值从好到坏依次是:

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

一般来说,好的sql查询至少达到range级别,最好能达到ref。

possible_keys

查询涉及到的字段上存在索引,则该索引将被列出,但不一定被查询实际使用。

key

实际使用的索引,如果为NULL,则没有使用索引。查询中如果使用了覆盖索引,则该索引仅出现在key列表,不出现在possible_keys中。

key_len

表示索引中使用的字节数,查询中使用的索引的长度(最大可能长度),并非实际使用长度,理论上长度越短越好。key_len是根据表定义计算而得的,不是通过表内检索出的。

ref

显示索引的那一列被使用了,如果可能,是一个常量const。

rows

根据表统计信息及索引选用情况,大致估算出找到所需的记录所需要读取的行数。

Extra

关于MYSQL如何解析查询的额外信息。将在表4.3中讨论,但这里可以看到的坏的例子是Using temporary和Using filesort,意思MYSQL根本不能使用索引,结果是检索会很慢。以下为extra列返回的描述的意义。

三、相关链接

原文连接:MySQL高级 之 explain执行计划详解

上一篇下一篇

猜你喜欢

热点阅读