如何使用 EXPLAIN 分析性能

Posted on Fri, 27 Jun 2025 16:07:24 +0800 by LiangMingJian


EXPLAIN

EXPLAIN 通过展示查询的执行计划(Execution Plan),直观呈现以下内容:

  • 执行步骤顺序id字段)
  • 表访问方式type字段)
  • 索引使用情况key字段)
  • 数据扫描量预估rows字段)
  • 额外操作开销Extra字段)

例如:

EXPLAIN SELECT * FROM orders WHERE user_id = 100;

输出结果类似:

id | select_type | table  | type | possible_keys | key     | rows | Extra
1  | SIMPLE      | orders | ref  | idx_user      | idx_user| 15   | Using where

此结果说明:引擎通过索引 idx_user 快速定位到 15 行数据。

type = ref 表示使用了索引。

type

  • ALL:全表扫描(性能杀手⚠️)
  • index:全索引扫描(需优化)
  • range:索引范围扫描(较高效)
  • ref/eq_ref:索引精确匹配(最优解)

Extra

  • Using filesort:内存外排序(消耗CPU)
  • Using temporary:创建临时表(内存/磁盘开销)
  • Using index:覆盖索引(理想状态)
参考文件1: EXPLAIN工具:查询执行计划分析与索引诊断