Navicat不支持原生双面板并排显示SQL与执行计划,需手动开两个查询窗口:一个执行SQL切至“结果”标签,另一个同语句点“解释”切至“解释”标签,再用系统快捷键并列铺开对比。
Navicat 里怎么并排看 SQL 和执行计划?
不能靠“自动分栏”——navicat 本身不提供原生的左右/上下双面板同步显示 sql 编辑区和执行计划结果的功能。所谓“同时查看”,实际是靠手动切换标签页 + 合理利用窗口布局实现的临时对比,不是实时联动视图。
“解释”按钮触发的是 EXPLAIN,不是真正执行
点击 解释 按钮时,Navicat 会自动在你写的语句前加上 EXPLAIN(MySQL)或 EXPLAIN ANALYZE(PostgreSQL),然后发送给数据库;它不会运行原 SQL,也不会返回查询结果数据。这意味着:
- 如果你没先点
执行,解释标签页里可能为空或报错(比如语句含变量、依赖临时表) -
EXPLAIN结果中的rows、key、type等字段,反映的是预估路径,不是真实耗时或扫描行数(除非用EXPLAIN ANALYZE) - Oracle 或 SQL Server 用户要注意:
EXPLAIN PLAN FOR需要配合DBMS_XPLAN.DISPLAY才能查出结果,Navicat 不会自动补全这一步
手动模拟“分栏对比”的实操技巧
最接近“并排看”的做法,是把 Navicat 查询窗口拆成两个独立实例,或用系统级窗口管理:
- 开两个 Navicat 查询窗口:一个粘贴原始 SQL 并点
执行,切到结果标签;另一个粘贴同一段 SQL,点解释,切到解释标签 —— 然后用 Windows 的Win + ←/Win + →快捷键将两个窗口并列铺开 - 如果用的是 Navicat Premium 17+,可右键查询结果 →
固定,这样即使切换到其他查询,之前的结果和执行计划仍保留在各自标签页中,方便来回点选比对 - 别依赖“SQL 自动格式化”后的执行计划:格式化可能插入换行或注释,导致
EXPLAIN解析失败;建议在解释前先确认语句是单行、无 /* */ 注释、无未声明变量
容易被忽略的关键细节
很多人卡在“点了解释但没反应”,其实问题常出在数据库连接配置或语句状态上:
- MySQL 8.0.22+ 默认关闭
optimizer_trace,但 Navicat 的图形化执行计划依赖它;需确认连接属性里的“高级”选项卡中,“使用优化器跟踪”已勾选 - PostgreSQL 用户若看到
EXPLAIN返回空,大概率是因为语句末尾多了分号(;)—— PostgreSQL 的EXPLAIN ANALYZE不接受带分号的单语句,删掉再试 - SQL Server 的图形化执行计划需要连接时启用“显示执行计划”选项(在连接属性 → “常规” → 勾选“显示执行计划”),否则只返回文本版


















