SQL Server查询时间测试

时间:2011-05-09 21:15:05

标签: sql-server sql-server-2005

在SSMS中,我可能会运行需要一段时间才能运行的查询。如果我再次运行查询,它几乎立即完成,当我进行修改(例如添加新索引)时很难看到改进。

人们如何定时查询,以便他们能够准确地判断他们的更改是否实际上有所改善?

注意,我使用sql server 2005

2 个答案:

答案 0 :(得分:3)

在具有生产数据卷的测试/ dev服务器上,您将使用以下内容清除执行和数据缓存:

CHECKPOINT
DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE

<强> NB。不要在生产服务器上运行它

这是因为,在您第一次执行查询后,数据将缓存在RAM中,执行计划将被缓存。因此,对于后续调用,可以更快地检索它 - 主要是由于数据缓存,因为从RAM获取数据要比访问磁盘快得多。

所以你会: 1)运行初始查询并记录统计数据 2)使查询/索引改变
3)按上述清除缓存
4)运行查询并记录新的统计数据

另外,只需比较改变之前/之后的执行计划就会给出差异的指示 - 例如如果你看到用索引搜索替换了表扫描。

答案 1 :(得分:2)

您应该查看查询执行计划 - 注意索引扫描或表扫描,您希望寻求。在SSMS中 - &gt;查询 - &gt;包括实际执行计划。再次运行查询,您将在选项卡中看到结果。

您看到您的结果正在优化 - 这也可能在生产中发生。但是,您的查询可能也必须与其他生产系统竞争,这可能会不时地从缓存中删除您的查询结果。

http://www.sql-server-performance.com/tips/query_execution_plan_analysis_p1.aspx