mysql 解读sql执行情况(explain)

explain 命令来看SQL的执行情况:


image.png

我们来解读下重要的字段

1)type :这个字段是我们优化要重点关注的字段,这个字段直接反映我们SQL的性能是否高效。性能由好到差依次为:system>const>eq_ref>ref>range>index>all。

2)possible_keys:显示可能应用在这张表中的索引,但不一定被查询实际使用。

3)key:实际使用的索引。

4)key_len:表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度。一般来说,索引长度越长表示精度越高,效率偏低;长度越短,效率高,但精度就偏低。并不是真正使用索引的长度,是个预估值。

5)rows:大致找到所需记录需要读取的行数。

6)filter:表示选取的行和读取的行的百分比,100表示选取了100%,80表示读取了80%。

7)extra:一些重要的额外信息,用于查看排序分组很有用。

  • Using filesort:使用外部的索引排序,而不是按照表内的索引顺序进行读取。(一般需要优化)
  • Using temporary:使用了临时表保存中间结果。常见于排序order by和分组查询group by(最好优化)
  • Using index:表示select语句中使用了覆盖索引,直接冲索引中取值,而不需要回行(从磁盘中取数据)
  • Using where:使用了where过滤
  • Using index condition:5.6之后新增的,表示查询的列有非索引的列,先判断索引的条件,以减少磁盘的IO
  • Using join buffer:使用了连接缓存
  • impossible where:where子句的值总是false

你可能感兴趣的:(mysql 解读sql执行情况(explain))