navicat 16 不提供图形化执行计划面板,需依赖各数据库原生命令:mysql用explain,sql server用set statistics xml on,postgresql用explain (analyze, buffers);结果以文本表格返回,无自动高亮或翻译,需用户自行对照文档解读。
navicat 16 里没有内置的「执行计划可视化面板」
navicat 16 本身不提供像 sql server management studio 那样的图形化执行计划查看器(如显示嵌套循环、索引扫描等图标树),它只是个数据库客户端,不参与查询优化器的解析过程。真正生成执行计划的是后端数据库(mysql、postgresql、sql server 等),navicat 只负责把命令发过去、把结果拿回来。
MySQL 用户:用 EXPLAIN 手动查执行计划
在 Navicat 的 SQL 编辑器中,直接在你要分析的语句前加 EXPLAIN 或 EXPLAIN FORMAT=JSON 即可:
EXPLAIN SELECT * FROM users WHERE status = 1 AND created_at > '2024-01-01';
执行后会返回一个表格结果,关键列包括:id、type、possible_keys、key、rows、Extra。注意:
-
type值为ALL表示全表扫描,通常要优化 -
key为空但possible_keys有值,说明索引没被选中 -
Extra出现Using filesort或Using temporary是性能风险信号 - 如果语句含子查询或 UNION,
EXPLAIN FORMAT=JSON能看到更完整的嵌套结构
SQL Server 用户:必须用 SET STATISTICS XML ON
MySQL 的 EXPLAIN 在 SQL Server 上不生效。正确做法是:
SET STATISTICS XML ON;<br>SELECT * FROM orders WHERE order_date > '2025-01-01';<br>SET STATISTICS XML OFF;
执行后,Navicat 会在结果标签页下方多出一个「Execution Plan」选项卡(仅当服务器返回了 XML 执行计划时才出现)。但要注意:
- 这个选项卡只在 Navicat 连接 SQL Server 且启用了 TLS 1.2+ 时稳定可用(旧版驱动可能丢弃 XML 结果)
- 如果没看到该标签,检查是否漏写了
SET STATISTICS XML ON,或确认连接属性里未禁用「Return execution plan」选项 - XML 计划内容较大,Navicat 不做渲染,需右键 →「Save As」存为 .sqlplan 文件,再用 SSMS 打开
PostgreSQL 用户:依赖 EXPLAIN (ANALYZE, BUFFERS)
PostgreSQL 的执行计划更重实际运行数据,推荐组合使用:
EXPLAIN (ANALYZE, BUFFERS, COSTS OFF) SELECT * FROM products WHERE category_id = 5;
其中:
-
ANALYZE让语句真实执行并返回耗时、行数、缓存命中率等实测数据 -
BUFFERS显示 shared hit/reads,判断是否充分利用缓存 -
COSTS OFF关闭成本估算,避免干扰对实际耗时的判断 - Navicat 会把结果以文本表格形式展示,没有图形节点,但足够定位慢点(比如某 Nested Loop 实际跑了 2 万次)
真正容易被忽略的是:不同数据库的执行计划输出格式差异极大,不能套用同一套解读逻辑;Navicat 从不自动翻译或高亮警告项,所有判断都得靠你对照文档看字段含义。











