首页/数据/SQL 速查/EXPLAIN FORMAT=TREE 与 FORMAT=JSON
本包目录(311 条)
查询基础33 条连接与子查询40 条聚合与窗口函数54 条函数速查60 条变更与事务52 条
性能与执行计划72 条

EXPLAIN FORMAT=TREE 与 FORMAT=JSON

TREE 把计划渲染成树形并带估算成本(8.0.16+),JSON 提供机器可读的成本明细,两者都可用于对比不同写法。

SQL 速查数据更新于 2026-10-12

TREE

TREE
EXPLAIN FORMAT=TREE
SELECT o.id
FROM orders o
JOIN users u ON u.id = o.user_id
WHERE u.city = 'shanghai'
ORDER BY o.created_at DESC
LIMIT 10;

-- 输出形如:
-- -> Limit: 10 row(s)
--     -> Sort: o.created_at DESC, limit input to 10 row(s) per chunk
--         -> Stream results
--             -> Nested loop inner join

JSON

JSON
EXPLAIN FORMAT=JSON
SELECT * FROM orders WHERE user_id = 100;
-- JSON 中含 cost_info、key_length、used_key_parts 等字段,便于脚本解析
TREE8.0.16 起带成本与行数估算,阅读顺序即访问顺序
JSON字段细粒度到单个访问路径,适合自动化对比
配合 ANALYZEEXPLAIN ANALYZE 输出为 TREE 形态,含实测值

易错点

  • 把 cost 当成时间:它是优化器内部单位,只适合同一实例上不同写法之间的横向比较
  • 在 8.0.16 之前找 TREE 的成本数值:旧版本 TREE 不带 cost,写法与版本要对上

数据来源与参考

  • MySQL 8.0 Reference Manual §8.8.3 Extended EXPLAIN Output Formats
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌