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
网友评论