explain命令的表头

7、ken_len
索引中使用的字节数,可通过该列计算使用索引的长度。该列显示的是索引字段的最大可能长度,并不是实际使用的长度,是根据表定义计算得出的,不是通过表内检索得出。该列长度越短查找越快。

8、 ref
表示使用了索引的哪一列或是索引了一个常量值

9、rows
估算找到对应记录需要检索的行数,基于查找的type和索引使用情况key、key_len综合得出。该值越小,查询越快。

10、Extra
额外信息
-
Using filesort:使用外部索引排序,而非按照表内索引顺序读取。在MySQL中无法按照索引完成的排序称为文件排序。

-
Using temporary
使用到临时表来保存查询中间结果,在对查询结果排序时用到了临时表,常见排序查询和分组查询,应尽量避免。

-
Using index
查询使用了覆盖索引,避免了访问表的数据行,效率有显著提升。
同时出现Using where,则表示索引被用来执行索引键值的查找;如果没有出现,表示索引用来读取数据而非查找。

-
Using where
使用了where子句 -
Using join buffer
使用了连接缓存 -
impossible where
where子句的值总是false,不能用来获取任何元组

-
select tables optimized away
没有使用group by子句的情况下,基于索引优化MIN/MAX操作或者对于MyISAM存储引擎优化COUNT(*)操作,不需要等到执行阶段进行计算,而是查询执行计划生成的时候完成优化。 -
distinct
优化distinct操作,即找到了第一个匹配值后就不再继续查找。
本文深入探讨SQL查询优化的关键,解析explain命令的输出表头,包括ken_len、ref、rows和Extra等列的含义及作用,如Usingindex、Usingwhere、Usingfilesort等,帮助理解索引使用情况,提升查询效率。
1373

被折叠的 条评论
为什么被折叠?



