Navicat 不支持导出执行计划为纯文本,唯一可靠方式是右键执行计划结果页选“复制为纯文本”;因其属特殊视图,不走标准导出逻辑,“导出向导”禁用且无效。
navicat 本身不提供「导出执行计划为纯文本」的独立选项,但执行计划结果页右键菜单里的「复制为纯文本」是唯一可靠、无格式污染的方式。
为什么不能用「导出向导」导出执行计划
执行计划(EXPLAIN 输出)在 Navicat 中属于「查询结果页的特殊视图」,它不走标准的数据集导出逻辑。你点「文件 → 导出结果」时,该菜单对执行计划页是灰色禁用的;即使强行从其他结果页导出,也只会导出原始 SQL 或空结果——因为执行计划不是表数据,而是解析树+统计信息的结构化展示。
- 导出向导只支持
SELECT查询结果、表内容、视图快照等可枚举行集 - 执行计划页底层调用的是数据库的
EXPLAIN FORMAT=TREE或EXPLAIN ANALYZE,返回的是嵌套文本块,Navicat 不将其识别为“可导出数据” - 试图用「导出为 CSV/TXT」会失败或静默跳过,没有任何报错提示
「复制为纯文本」操作要点与陷阱
这是最直接有效的路径,但默认行为容易被忽略细节:
- 必须先完整展开执行计划:点击每行左侧的 ▶ 箭头,确保所有子节点(如
attached subqueries,using filesort)都可见 —— 复制只抓取当前可视区域 - 右键位置要准:在执行计划结果表格的任意单元格内右键,选「复制为纯文本」,不是「复制」或「复制为 Excel」
- 粘贴后可能带多余空行或缩进不齐:MySQL 的
FORMAT=TREE输出含 Unicode 缩进字符(如 `│` `├` `└`),部分编辑器(如记事本)会折行错位;推荐用 VS Code、Notepad++ 或 Sublime Text 打开 - 字段名不会被复制:比如「id」「select_type」「rows」「filtered」这些列头不会出现在纯文本里,只有值行 —— 如果你需要带标题,得手动补一行或改用截图
大执行计划导出时的分段处理技巧
当 EXPLAIN ANALYZE 返回几百行嵌套结构时,一次性复制易漏行或卡顿:
- 在查询编辑器中加
LIMIT 1后再执行EXPLAIN ANALYZE,先确认结构是否符合预期 - 按住
Shift+ 鼠标滚轮,快速滚动到深层节点,再分段复制(例如先复制主驱动表部分,再复制子查询块) - 避免用「全选(Ctrl+A)」:执行计划页的全选会把顶部 SQL 语句、耗时统计、甚至 Navicat 状态栏文字也拉进来
- 如果需长期归档,建议直接在命令行跑:
mysql -e "EXPLAIN FORMAT=TREE SELECT ..." > plan.txt,更可控
真正容易被忽略的是:执行计划里的「实际执行时间(actual time)」和「内存使用(Buffers)」等关键指标,在 Navicat 界面中只显示在底部状态栏或 tooltip 里,「复制为纯文本」完全不包含它们——需要人工记录或切到「详细信息」面板手抄。











