Mysql中EXPLAIN解读

Explain介绍

当EXPLAIN与可解释的语句一起使用时,MySQL将显示来自优化器的有关语句执行计划的信息。也就是说,MySQL解释了它将如何处理该语句,包括有关如何连接表以及以何种顺序连接表的信息。在select语句之前增加explain关键字,执行后MySQL就会返回执行计划的信息,而不是执行sql。可以通过Explain来查看sql语句中的索引执行情况。

执行结果显示列

在这里插入图片描述

  • id:语句唯一标识。id列的编号是select的序列号,有几个select就会有几个id,并且id是按照select出现的顺序增长的,id列的值越大优先级越高,id相同则是按照执行计划从上向下执行,id为空则是最后执行的。
  • select_type:查询类型
  • table:表名
  • partitions:当前查询匹配记录的分区。对于未分区的表,返回null
  • type:针对单表的查询方式(全表扫描,索引)
  • possible_keys:可能的索引选择
  • key:实际选择的索引
  • key_len:索引的长度
  • ref:索引的哪一行被引用了
  • rows:估计要扫描的列
  • filtered:表示符合查询条件的数据百分比
  • Extra:附加信息

select_type

当多个select语句进行嵌套时,select_type会有不同的取值,常见的有如下几种:

  • simple:不包含子查询和union的简单查询
  • primary:复杂查询中最外层的select
  • subquery:包含在select中的子查询
  • derived:包含在from子句中的子查询
  • union:在union中的第二个和随后的select

type

表示联接类型,不同类型之间的性能不同,从好到坏依次是:
system > const > eq_ref > ref>… > range > index > all
一般来说,得保证查询至少达到range级别,最好能达到ref。
Mysql中EXPLAIN解读_第1张图片

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