navicat 不支持导出执行计划为图片或pdf,因其执行计划视图无导出接口;mysql用户应使用explain format=json,postgresql用户可尝试explain (analyze, format svg),sql server用户用set statistics xml on获取.sqlplan文件。
navicat 不支持导出或保存执行计划为图片、pdf 或任何可存档格式——这不是操作遗漏,而是功能根本不存在。
为什么右键/菜单/打印都找不到导出执行计划的选项
Navicat 的执行计划视图(即点击「执行」后出现的树状图形)基于内部轻量级渲染引擎,不生成 SVG/PNG 缓冲,也不暴露导出接口。它和查询结果集、ER 图、报表设计器是三套完全隔离的逻辑:
- 查询结果集 → 支持导出 CSV/Excel/HTML,走数据流管道
- ER 图 → 可右键「导出为图片」,因调用系统绘图 API
- 执行计划视图 → 仅响应悬停、展开、高亮,无导出能力
你按 Cmd+P 或 Ctrl+P 弹出空白打印框,或在 File 菜单里翻遍也找不到「Save As Image」,不是路径藏得深,是压根没实现。
MySQL 用户:用 EXPLAIN FORMAT=JSON 替代图形界面
真正能落地存档的方式,是绕过 Navicat 图形层,直接让 MySQL 返回结构化计划:
- 在查询编辑器中执行:
EXPLAIN FORMAT=JSON SELECT ...,复制整段 JSON 输出 - 粘贴进 VS Code,装
JSON插件美化,另存为plan.json - 用脚本转 PDF(如
jq+weasyprint),或直接发给同事用浏览器打开 JSON 查看树形结构 - 避免用
FORMAT=TRADITIONAL,它输出的是文本表格,节点嵌套关系丢失,不利于分析嵌套循环或物化子查询
PostgreSQL 用户:确认服务器支持 FORMAT=SVG 再尝试
部分 v12+ 版本支持直接返回 SVG 字符串,但需满足两个前提:
- 数据库配置中启用了
track_activities = on和track_counts = on - 执行时显式加
ANALYZE(否则可能返回空 SVG):EXPLAIN (ANALYZE, FORMAT SVG) SELECT ... - 得到的 SVG 是纯文本,粘贴到浏览器地址栏(
data:image/svg+xml;base64,...)即可渲染,右键「另存为」得矢量图 - 若返回错误提示
unrecognized EXPLAIN option,说明版本太低或参数未启用,退回FORMAT=JSON更稳妥
SQL Server 用户:用 STATISTICS XML 得到 .sqlplan 文件
这是唯一原生支持导出为可复用二进制格式的路径:
- 在查询前加:
SET STATISTICS XML ON;,再执行你的SELECT - 执行后切换到「Messages」标签页底部,点击「Show Execution Plan」按钮
- 右键该计划图 → 「Save Execution Plan As…」→ 保存为
xxx.sqlplan(本质是 XML) -
.sqlplan文件可用 SSMS 打开,也可用 PowerShell +Microsoft.SqlServer.Management.Smo解析成文本或 HTML - 注意:Navicat 自身无法解析或渲染 .sqlplan,它只是帮你触发 SQL Server 返回 XML;别指望在 Navicat 里双击打开
真正容易被忽略的点是:所有这些替代方案,输出内容都来自数据库服务端,而非 Navicat 客户端渲染。这意味着,如果你要归档或协作分析,必须把命令、参数、数据库版本、是否含 ANALYZE 等上下文一并记下——光存一张截图或一个 JSON,半年后很可能看不懂当时为什么选了 Nested Loop 而不是 Hash Join。











