mysql的EXPLAIN作用

2019-03-18  本文已影响0人  旅行者xy

mysql中的EXPLAIN 命令, 它可以对 SELECT 语句进行分析, 并输出 SELECT 执行的详细信息, 以供开发人员针对性优化.
EXPLAIN 命令用法十分简单, 在 SELECT (SELECT, DELETE, INSERT, REPLACE, UPDATE)语句前加上 Explain 就可以了, 例如:

EXPLAIN SELECT date from t_classroom WHERE size > 3;

image.png

其中各个字段的含义如下:

下面来分析下几个比较重要的字段

select_type

select_type 表示了查询的类型, 它的常用取值有:

最常见的查询类别应该是 SIMPLE 了, 比如当我们的查询没有子查询, 也没有 UNION 查询时, 那么通常就是 SIMPLE 类型,如上面所示。

table

表示查询涉及的表或衍生表

type

type 字段比较重要, 它提供了判断查询是否高效的重要依据依据. 通过 type 字段, 我们判断此次查询是 全表扫描 还是 索引扫描 等.

type 常用类型
type 常用的取值有:

type 类型的性能比较

通常来说, 不同的 type 类型的性能关系如下:

possible_keys

possible_keys 表示 MySQL 在查询时, 能够使用到的索引. 注意, 即使有些索引在 possible_keys 中出现, 但是并不表示此索引会真正地被 MySQL 使用到. MySQL 在查询时具体使用了哪些索引, 由 key 字段决定.

key

此字段是 MySQL 在当前查询时所真正使用到的索引.

key_len

表示查询优化器使用了索引的字节数. 这个字段可以评估组合索引是否完全被使用, 或只有最左部分字段被使用到.
key_len 的计算规则如下:

rows

rows 也是一个重要的字段. MySQL 查询优化器根据统计信息, 估算 SQL 要查找到结果集需要扫描读取的数据行数.
这个值非常直观显示 SQL 的效率好坏, 原则上 rows 越少越好.

Extra

EXplain 中的很多额外的信息会在 Extra 字段显示, 常见的有以下几种内容:



参考链接:
https://segmentfault.com/a/1190000008131735
https://dev.mysql.com/doc/refman/5.6/en/explain-output.html

上一篇下一篇

猜你喜欢

热点阅读