免费在线 MySQL / MariaDB EXPLAIN 执行计划可视化分析工具。支持 EXPLAIN FORMAT=JSON 输出解析,树状展示多表关联路径、索引命中状态、预估扫描行数,并自动标红警告全表扫描(ALL)瓶颈。100% 浏览器纯前端解析,安全无网络上传。
在 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),点击即可一键生成可视化分析矩阵。
| 访问类型 (Type) | 性能评级 | 原理与产生场景说明 | 优化行动建议 |
|---|---|---|---|
| system / const | 最高效 (O(1)) | 表中只有一行,或通过主键 (PRIMARY) / 唯一索引等值匹配 | 理想状态,无需优化 |
| eq_ref | 极高效 (O(1)) | 多表关联 JOIN 时,关联条件使用了被驱动表的主键或唯一索引 | 关联查询的标准最佳状态 |
| ref | 高效 (良好) | 使用非唯一索引等值查询,或者联合索引最左前缀等值匹配 | 常规业务索引命中的健康状态 |
| range | 一般 (范围) | 利用索引检索给定范围的行(如 BETWEEN、>、<、IN) |
注意范围过大导致检索行数膨胀 |
| index | 较慢 (全索引扫描) | 遍历了整棵索引 B+ 树,但无需回表(覆盖索引) | 若表数据量巨大,仍需排查过滤条件 |
| ALL (严重告警) | 最差 (全表扫描) | 未使用任何索引,从磁盘数据页逐行读取整张表的所有数据 | 大表必须立即建立相应索引,防止拖垮整个数据库实例 |
不一定。在以下两种常见情况下,优化器选择全表扫描是完全合理且高效的: