【MySQL】explain命令详解(三)

explain命令的表头

7、ken_len

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

8、 ref

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

9、rows

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

10、Extra

额外信息

  1. Using filesort:使用外部索引排序,而非按照表内索引顺序读取。在MySQL中无法按照索引完成的排序称为文件排序。

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

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

  4. Using where
    使用了where子句

  5. Using join buffer
    使用了连接缓存

  6. impossible where
    where子句的值总是false,不能用来获取任何元组

  7. select tables optimized away
    没有使用group by子句的情况下,基于索引优化MIN/MAX操作或者对于MyISAM存储引擎优化COUNT(*)操作,不需要等到执行阶段进行计算,而是查询执行计划生成的时候完成优化。

  8. distinct
    优化distinct操作,即找到了第一个匹配值后就不再继续查找。

原创文章 10 获赞 10 访问量 4756

猜你喜欢

转载自blog.csdn.net/Steven_L_/article/details/105847737