> 文章列表 > MYSQL使用Explain生成的结果分别表示的意思

MYSQL使用Explain生成的结果分别表示的意思

MYSQL使用Explain生成的结果分别表示的意思

  1. EXPLAIN 是 MySQL 数据库提供的一个查询分析工具,用于分析查询语句的执行计划和性能。
  2. EXPLAIN 的结果是一张表格,显示了 MySQL 查询优化器如何执行查询,并提供了关于查询计划的详细信息。
字段名 含义
id 查询的唯一标识符,可以作为查询计划树的节点标识
select_type 查询类型,包括 SIMPLE(简单查询)、PRIMARY(最外层查询)、SUBQUERY(子查询)、DERIVED(派生表查询)等
table 此查询操作的表
partitions 查询操作涉及的分区
type 查询操作使用的访问类型,如 ALL(全表扫描)、INDEX(索引扫描)、RANGE(范围扫描)、REF(基于索引的连接)、EQ_REF(唯一性索引的连接)等
possible_keys 可能被用到的索引
key 实际使用的索引
key_len 实际使用的索引长度
ref 对于联接操作,表示连接使用的列
rows 预估的扫描行数
filtered 表示查询结果的过滤程度,值越低表示过滤越少
Extra 额外的信息,如 Using where(使用了 WHERE 条件), Using index(使用了索引)、Using temporary(使用了临时表)等

以下是一个示例的 EXPLAIN 结果表格:

+----+-------------+-------+------------+-------+---------------+---------+---------+-------+------+----------+-----------------------+
| id | select_type | table | partitions | type  | possible_keys | key     | key_len | ref   | rows | filtered | Extra                 |
+----+-------------+-------+------------+-------+---------------+---------+---------+-------+------+----------+-----------------------+
| 1  | SIMPLE      | users | NULL       | ALL   | NULL          | NULL    | NULL    | NULL  | 100  | 10.00    | Using where           |
| 1  | SIMPLE      | orders| NULL       | ref   | user_id       | user_id | 4       | users | 50   | 50.00    | Using index condition |
+----+-------------+-------+------------+-------+---------------+---------+---------+-------+------+----------+-----------------------+

这个例子中有两个查询操作:

  1. id 字段分别为 1,表示它们是两个独立的查询。
  2. select_type 分别为 SIMPLE,表示它们是简单查询。
  3. table 字段分别为 users 和 orders,表示查询涉及的表
  4. type 分别为 ALL 和 ref,表示第一个查询使用了全表扫描(ALL),而第二个查询使用了索引引用(ref)操作。
  5. possible_keys 分别为 NULL 和 user_id,表示可能被用到的索引。
  6. key 分别为 NULL 和 user_id,表示实际使用的索引。
  7. key_len 分别为 NULL 和 4,表示实际使用的索引长度。
  8. ref 分别为 NULL 和 users,表示连接使用的列。
  9. rows 分别为 100 和 50,表示预估的扫描行数。
  10. filtered 分别为 10.00 和 50.00,表示查询结果的过滤程度。
  11. Extra 分别为 Using where 和 Using index condition,表示额外的信息,如使用了 WHERE 条件和索引条件。

注:需要注意的是,EXPLAIN 的结果可能会根据查询语句、数据库结构和数据分布等因素而有所不同,因此对于不同的查询,EXPLAIN 的结果也会有所差异。可以根据 EXPLAIN 的结果来进行查询性能优化,例如优化索引、重写查询语句、调整数据库结构等,以提高查询性能。