MySQL / MariaDB EXPLAIN 执行计划可视化分析器

免费在线 MySQL / MariaDB EXPLAIN 执行计划可视化分析工具。支持 EXPLAIN FORMAT=JSON 输出解析,树状展示多表关联路径、索引命中状态、预估扫描行数,并自动标红警告全表扫描(ALL)瓶颈。100% 浏览器纯前端解析,安全无网络上传。

100% 浏览器本地运行 · 零数据上传
MySQL / MariaDB EXPLAIN 执行计划可视化器 支持 EXPLAIN FORMAT=JSON
可在终端运行 EXPLAIN FORMAT=JSON <SQL> 获取
请粘贴执行计划 JSON 或点击上方加载示例

如何获取 MySQL EXPLAIN FORMAT=JSON?

在 MySQL 5.7、8.0 以及 MariaDB 中,传统的纯文本表格 EXPLAIN <SQL> 只能粗略展示单行信息,无法清晰看清优化器的代价评估(query_cost)、关联嵌套循环(nested_loop)以及附加过滤条件(attached_condition)。

只需在您的 SQL 查询前加上 EXPLAIN FORMAT=JSON 即可获取富文本 JSON 计划:

EXPLAIN FORMAT=JSON
SELECT u.id, u.username, o.order_no, o.amount
FROM users u
INNER JOIN orders o ON u.latest_order_id = o.id
WHERE u.status = 1 AND o.created_at >= '2026-10-01';

将数据库客户端输出的结果直接完整复制粘贴到本工具中(支持包含外围 +---+ 边框或 EXPLAIN: 标签,系统会自动精准提取内部 JSON),点击即可一键生成可视化分析矩阵。

MySQL 访问方式(Type)性能阶梯全景表

访问类型 (Type) 性能评级 原理与产生场景说明 优化行动建议
system / const 最高效 (O(1)) 表中只有一行,或通过主键 (PRIMARY) / 唯一索引等值匹配 理想状态,无需优化
eq_ref 极高效 (O(1)) 多表关联 JOIN 时,关联条件使用了被驱动表的主键或唯一索引 关联查询的标准最佳状态
ref 高效 (良好) 使用非唯一索引等值查询,或者联合索引最左前缀等值匹配 常规业务索引命中的健康状态
range 一般 (范围) 利用索引检索给定范围的行(如 BETWEEN、>、<、IN) 注意范围过大导致检索行数膨胀
index 较慢 (全索引扫描) 遍历了整棵索引 B+ 树,但无需回表(覆盖索引) 若表数据量巨大,仍需排查过滤条件
ALL (严重告警) 最差 (全表扫描) 未使用任何索引,从磁盘数据页逐行读取整张表的所有数据 大表必须立即建立相应索引,防止拖垮整个数据库实例

全表扫描(ALL)一定意味着必须加索引吗?

不一定。在以下两种常见情况下,优化器选择全表扫描是完全合理且高效的:

  1. 字典表或微小表:当表内总共只有几十或几百行记录时,直接顺序读磁盘往往比走索引树再回表更快;
  2. 低区分度字段或返回占比过高:当查询条件过滤后的结果占全表总行数的 20%~30% 以上时,优化器会判定走索引回表的随机 I/O 成本高于顺序全表扫描,从而主动放弃索引。