美文网首页
explain命令含义详解

explain命令含义详解

作者: 愤愤的有痣青年 | 来源:发表于2019-10-31 17:24 被阅读0次

explain命令是用来对sql语句进行分析的一个命令,可以通过此功能来对语句进行优化.其使用方式为
explain <sql语句>,例如explain select * fom Order;
执行后的返回值如下:

explain执行结果

其中,每列的含义如下:

id:选择标识符
select_type:表示查询的类型。
table:输出结果集的表
partitions:匹配的分区
type:表示表的连接类型
possible_keys:表示查询时,可能使用的索引
key:表示实际使用的索引
key_len:索引字段的长度
ref:列与索引的比较
rows:扫描出的行数(估算的行数)
filtered:按表条件过滤的行百分比
Extra:执行情况的描述和说明

每项的具体内容如下:

id

索引的执行顺序,值越大越先执行,值相同时按照从上到下顺序执行.一般在子查询时有意义,其会返回多行数据,越里面的查询值越大.

select_type

简单的SELECT语句,不包括UNION(连接两个select结果集的关键字)操作或子查询操作.

table

当前操作的表名

partitions

type

type所显示的是查询使用了哪种类型,其内心如下所示按快到慢排序:

  • const:常量查询,即查询的值和where的值都是同一个,且为唯一索引,这个时候扫描为直接匹配命中,其操作就类似于拿一个变量的值,速度极快.
  • ref:使用非唯一索引,对索引值的完全搜索,即若有多个索引值,这些索引值需要都在where中.
  • range:只检索给定范围的行.即对索引字段进行范围查询,可以为> <等匹配符号,也可以为between关键字,查询字段可以索引或非索引字段.
  • index: 通过索引匹配得到主键索引值,索引值为部分索引,此时会遍历索引树,然后回表查询得到数据.
  • all:无索引遍历整个表.

possible_keys

指出MySQL能使用哪个索引在表中找到记录,查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被查询使用(该查询可以利用的索引,如果没有任何索引显示 null)

Key

在查询时实际上使用到的索引名,必然包含在possible_keys中.
如果没有选择索引,键是NULL。要想强制MySQL使用或忽视possible_keys列中的索引,在查询中使用FORCE INDEX、USE INDEX或者IGNORE INDEX。

key_len

表示索引中使用的字节数,可通过该列计算查询中实际使用到的索引的长度(key_len显示的值为索引字段的最大可能长度,并非实际使用长度,即key_len是根据表定义计算而得,不是通过表内检索出的)
不损失精确性的情况下,长度越短越好

ref

显示索引的哪一列被使用了,如果可能的话,最好是一个常数。哪些列或常量被用于查找索引列上的值。

rows

根据表统计信息及索引选用情况,大致估算出找到所需的记录所需要读取的行数,也就是说,用的越少越好.

filtered

Extra

包含不适合在其他列中显式但十分重要的额外信息

  • Using temporary
    使用了用临时表保存中间结果,MySQL在对查询结果排序时使用临时表。常见于排序order by和分组查询group by。
  • Using index
    表示相应的select操作中使用了覆盖索引(Covering Index),避免访问了表的数据行,效率不错。如果同时出现using where,表明索引被用来执行索引键值的查找;如果没有同时出现using where,表明索引用来读取数据而非执行查找动作,例如按索引树顺序读取索引值,type一般为index。
  • Using where
    表明使用了where过滤
  • Using join buffer
    表明使用了连接缓存,比如说在查询的时候,多表join的次数非常多,那么将配置文件中的缓冲区的join buffer调大一些。
  • impossible where
    where子句的值总是false,不能用来获取任何元组,例如where a>1 and a<0
  • select tables optimized away
    在没有GROUPBY子句的情况下,基于索引优化MIN/MAX操作或者对于MyISAM存储引擎优化COUNT(*)操作,不必等到执行阶段再进行计算,查询执行计划生成的阶段即完成优化
  • distinct
    优化distinct操作,在找到第一匹配的元组后即停止找同样值的动作.

相关文章

网友评论

      本文标题:explain命令含义详解

      本文链接:https://www.haomeiwen.com/subject/omqtbctx.html