Skip to content

如何使用 EXPLAIN

使用 EXPLAIN,只需在 SQL 语句前加上 EXPLAIN 关键字即可。例如:

sql
EXPLAIN SELECT * FROM users WHERE age > 30;

运行这条命令时,MySQL 不会实际执行这个查询,而是返回一个关于该查询执行计划的信息表格。

输出解释

EXPLAIN 的输出通常包含以下列(具体列可能因 MySQL 版本不同而有所差异):

  • id: 查询中每个SELECT标识符。如果查询涉及多个子查询或联合查询,则会有多个id。
  • select_type: 查询的类型,如 SIMPLE(简单查询)、PRIMARY(最外层查询)、SUBQUERY(子查询)等。
  • table: 当前操作的表名。
  • partitions: 匹配的分区(如果是分区表的话)。
  • type: 访问类型,从最优到最差排序为:system > const > eq_ref > ref > range > index > ALL。理想情况下应避免ALL(全表扫描)。
  • possible_keys: 可能使用的索引列表。
  • key: 实际使用的索引。
  • key_len: 使用索引的长度(字节数),可以用来判断复合索引被使用的部分。
  • ref: 哪一列或常量与索引一起用于查找。
  • rows: 预估需要检查的行数。越小越好。
  • filtered: 表示返回结果的行数占需读取行数的百分比。
  • Extra: 额外的信息,比如是否使用临时表、文件排序等。
最近更新