实际上我正在处理一个运行缓慢的 SQL 查询,我只能通过 SSMS 访问生产数据库。我无法直接访问生产服务器或分析器,因为它是共享服务器。生产机器和开发机器都有相同的执行计划。但是根据我的开发机器,Statistics Logical Reads 和 Profiler Reads 之间存在巨大差异。所以我必须在生产服务器上确认相同的差异。
通过生产服务器上的 SSMS:
我可以通过编写以下内容来查看 STATISTICS IO:
SET Statistics IO ON
我可以通过编写以下内容来查看 STATISTICS TIME:
SET Statistics TIME ON
我可以按以下方式查看实际执行计划:
CTRL+M
但是有没有办法在 SSMS 中查看 SQL Server Profiler 的读取。
编辑:
也许这篇文章会帮助你理解我的问题:INF: Differences in STATISTICS IO, SQL Profiler and Sysprocesses IO Counters (SQL 7 & 2000)。引用:“因此,一般情况下,SQL Profiler 报告的逻辑读取与 STATISTICS IO 报告的总和不匹配。但是,SQL Profiler 中报告的读取数应始终等于或大于统计 IO 值。”。
根据我的开发机器,就我而言,两者之间存在巨大差异。并且性能受到生产机器的影响,并且仍然显示两台机器上的统计逻辑读取数都非常低。
第二次编辑:
两台机器上作为 XML 的实际执行计划是相同的。
巨大意味着两台机器上的统计 IO 几乎都不是45,但 Profiler Reads在开发机器上是4764 。