代码之家  ›  专栏  ›  技术社区  ›  Chris Mullins

当包含执行计划时,SQL Server查询在SSMS中更快

  •  2
  • Chris Mullins  · 技术社区  · 14 年前

    在sqlserver2005managementstudio中,我正在测试一个使用一些表变量的查询,其中一个表变量对其具有集群唯一约束。我注意到,当我把实际的执行计划包括进来进行分析时,总的执行时间实际上会减少很多。

    这是什么原因,我应该只测试当包含执行计划的选项关闭时的总执行时间。

    2 回复  |  直到 13 年前
        1
  •  3
  •   AdaTheDev    14 年前

    听起来有点奇怪。你确定你所看到的差异并不是因为缓存的问题吗? 我总是通过不包括执行计划来测试存储过程的性能,并且在每次运行之前清除缓存,以便进行公平的比较(在test/dev db服务器上,而不是在生产环境中)。

    DBCC FREEPROCCACHE -- will clear the execution plan cache
    DBCC DROPCLEANBUFFERS -- will clear the data cache
    
        2
  •  0
  •   Polynomial    7 年前

    当最初在几百毫秒的时间内执行测试时,很难诊断,但是一旦我能够用一个较慢的查询重现这个问题,就更容易看到。在下面的屏幕截图中,有五次运行返回多个结果集的存储过程。前三次运行没有返回执行计划,第四次和第五次运行。尽管出现了明显更快的响应(~200ms而不是~5s),但查询实际上仍然需要~5s才能完成。我想客户端统计数据中的某个地方有一个bug,它正在计时返回的执行计划,而不是某些cirmcumstances下的完整查询。

    timings