Navicat for SQL Server 图形化执行计划需先启用“显示执行计划”选项,否则仅返回文本;实际执行计划会真实运行语句并显示 Actual/Estimated Rows 对比、内存授予、Query cost 等运行时数据,超 80% 应优先优化。
点“解释”就出图,但得先确认连接已启用图形化支持
navicat for sql server 默认调用的是实际执行计划(set statistics xml on),不是文本版,但前提是连接属性里必须勾选“显示执行计划”。这个选项藏在连接配置 → “常规”标签页底部,不勾选的话,点击“解释”只会返回纯文本或空白。很多用户反复点没反应,问题就卡在这一步。
- Windows 系统下可直接勾选;macOS 版本需确认 Navicat v17+,老版本(如 v15)即使勾选也可能渲染失败
- SQL Server 2005 及更早版本不支持 XML 执行计划输出,Navicat 会自动回落为
SET SHOWPLAN_TEXT ON,此时只有文字,没有图标和箭头 - 验证是否生效:在 SSMS 中按
Ctrl+M能出图,而 Navicat 不行 → 检查 Navicat 版本和连接设置;若 SSMS 也不行 → 问题在 SQL Server 实例本身(如权限、语法限制)
红色虚线框 + 粗箭头 = 优先盯住的两个信号
图形化计划不是看热闹的,重点就盯两处:带红色虚线框的运算符,和连接两个节点的粗箭头。前者是 Navicat 自动提取的缺失索引建议,后者暴露数据流动规模。
- 鼠标悬停红色虚线框,能看到类似
CREATE INDEX IX_XXX ON dbo.T (col1) INCLUDE (col2)的语句 —— 但它只基于单表 WHERE 条件生成,不考虑已有复合索引覆盖度,别复制粘贴就执行 - 箭头越粗,表示该步骤输出的行数越多;如果左侧是
SELECT,右侧连着Clustered Index Scan且箭头极粗,基本等于全表扫描,说明WHERE条件失效或索引未命中 -
Query cost (relative to batch)在右上角,超过 80% 就说明这条语句吃掉了整批资源,优先优化它
点了“解释”却只看到文本?先排除这三类硬性限制
图形化计划不是总能出来,常见原因就三个,跟 Navicat 设置关系不大,而是 SQL Server 服务端或语句本身的问题。
- 语句含不支持的语法:
INSERT EXEC、OPENQUERY、引用链接服务器对象,SQL Server 会直接拒绝生成图形计划,只返回错误或空结果 - 权限不足:必须有
SHOWPLAN权限(sysadmin、db_owner或显式GRANT SHOWPLAN TO [user]),否则报错Msg 262, Level 14, State 1: SHOWPLAN permission denied - Navicat 版本太低:v16 以下对 SQL Server 图形化支持不完整,v17+ 才稳定渲染内存授予、实际 vs 预估行数等关键字段
实际执行计划 ≠ 估计执行计划,别把 Actual Rows 当预估看
Navicat 默认给你的是实际执行计划(actual),意味着语句真跑了一次。所以你会同时看到 Actual Rows 和 Estimated Rows,二者差异大(比如预估 1 行、实际扫 10 万行),大概率是统计信息过期,该跑 UPDATE STATISTICS 了。
-
UPDATE/DELETE类语句点“解释”也会真实执行 —— 这点和 MySQL/PostgreSQL 的EXPLAIN本质不同,务必注意 - 如果你只想看预估路径、不触发真实执行,得手动改用
SET SHOWPLAN_XML ON+ 你的语句,再执行;但 Navicat 不提供这个开关,只能切到查询窗口手写 - 图形计划里所有成本百分比、内存授予值、警告图标(如“隐式转换”),都来自真实运行时采集,不是模拟出来的


















