使用 explain 分析 SQL

explain 显示了 MySQL 是如何使用索引来处理 select 语句和连接表。使用 explain 可以帮我们选择更好的索引和写出更优化的查询语句。

执行结果

一个 explain 语句执行的结果如下:

id

id 是 select 语句的标识符,没有什么意义,如果有子查询的话 explain 结果会有两条记录,id 分别是 1 和 2。这个序号代表了 sql 语句执行的顺序。

select_type

select_type 表示 select 的类型

有这几种值:

table

输出结果集的表

type

表示 mysql 查询所使用的方式

possible_keys

查询可能使用到的索引

key

即使使用的索引

key_len

使用的索引字段的长度

ref

使用哪个列或者常数与 key 一起从表中选择行。

rows

显示执行查询的行数,值越大越不好,说明没有用好索引。

filtered 存储引擎返回的数据在 server 层过滤后,剩下满足查询的记录数量比例。

extra

包含 MySQL 解决查询的相信信息。

参考

MySQL——通过EXPLAIN分析SQL的执行计划
MySQL explain 详解