关键信息
- 分类
- 开发与 Web
- 输入类型
- textarea, select, number
- 输出类型
- html
- 样本覆盖
- 4
- 支持 API
- Yes
概览
SQL 执行计划可视化器是一款专为数据库开发和运维人员设计的在线工具。它能够解析 PostgreSQL、MySQL 和 SQLite 的 EXPLAIN 或 EXPLAIN ANALYZE 输出,将其转化为直观的树状成本图,自动标注估算与实际行数的偏差热点,并针对全表扫描、临时表和慢查询提供具体的索引与 SQL 改写建议。
适用场景
- •数据库查询变慢,需要分析 SQL 实际执行路径以找出性能瓶颈时。
- •怀疑数据库统计信息过期,需要对比 EXPLAIN ANALYZE 中估算行数与实际行数的偏差时。
- •面对复杂的嵌套循环或多表关联,难以通过原始文本直观理清执行计划的层级关系时。
工作原理
- •将 PostgreSQL (JSON/TEXT)、MySQL (JSON/表格) 或 SQLite 的 EXPLAIN 输出粘贴至输入框,并可选填原始 SQL 查询。
- •选择对应的数据库方言(或使用自动识别),并根据需要调整树的最大深度上限。
- •工具解析文本并生成带缩进和颜色标注的执行计划树,高亮显示高能耗节点与行数估算偏差超过 10 倍的统计热点,同时输出具体的索引优化建议。
使用场景
用户案例
1. 诊断 PostgreSQL 统计信息过期导致的慢查询
后端开发工程师- 背景原因
- 线上用户表 users 查询变慢,开发人员获取了 EXPLAIN (ANALYZE, FORMAT JSON) 的输出,发现查询没有走索引。
- 解决问题
- 难以直观判断是索引缺失还是优化器估算失误导致了全表扫描。
- 如何使用
- 将 PostgreSQL 的 EXPLAIN JSON 粘贴至输入框,选择方言为 PostgreSQL,点击生成可视化树。
- 示例配置
-
{ "dialect": "postgresql", "maxDepth": 20 } - 效果
- 可视化树将 Seq Scan 节点标红,并高亮显示估算行数(1000行)与实际行数(95000行)存在近百倍偏差,提示运行 ANALYZE users 更新统计信息,并建议在 email 列上创建索引。
2. 优化 MySQL 隐式类型转换导致的索引失效
数据库管理员 (DBA)- 背景原因
- 业务系统升级后,一条根据订单号查询的 SQL 出现严重堆积,MySQL 的 EXPLAIN 显示为全表扫描。
- 解决问题
- 需要快速确认为什么已有的 idx_order_no 索引未被使用。
- 如何使用
- 粘贴 MySQL 的 EXPLAIN FORMAT=JSON 输出,输入对应的 SQL 查询,运行可视化分析。
- 示例配置
-
{ "dialect": "mysql", "sql": "SELECT * FROM orders WHERE order_no = 123456" } - 效果
- 工具检测到 order_no 为字符类型,而查询使用了数字,诊断出非 Sargable 谓词(隐式类型转换),并给出“修改查询参数类型或改写 SQL”的优化建议。
用 Samples 测试
json, sql, text相关专题
常见问题
支持哪些数据库的 EXPLAIN 格式?
支持 PostgreSQL(JSON 或 TEXT)、MySQL(JSON 或经典表格)以及 SQLite(EXPLAIN QUERY PLAN 文本)。
什么是“统计热点”?
当 EXPLAIN ANALYZE 中的实际执行行数与优化器估算行数偏差达到 10 倍及以上时,工具会将其标记为统计热点,通常意味着需要运行 ANALYZE 更新统计信息。
为什么建议使用 JSON 格式的 EXPLAIN 输出?
JSON 格式包含最完整的节点属性和度量数据,能让可视化器生成最精确的成本树和诊断建议。
工具会收集或存储我的 SQL 和执行计划数据吗?
不会,所有解析和可视化过程均在浏览器本地完成,不会向服务器上传您的敏感数据。
为什么我的执行计划没有显示实际行数?
只有使用 EXPLAIN ANALYZE(或 PostgreSQL 的 EXPLAIN (ANALYZE))获取的输出才包含实际运行数据,普通的 EXPLAIN 仅包含估算数据。