美文网首页
mysql 解读sql执行情况(explain)

mysql 解读sql执行情况(explain)

作者: twinkle8858 | 来源:发表于2022-10-09 15:16 被阅读0次

    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)

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