我正在使用SQL Server 2008 R2,并尝试使用不同的书写风格测试某些SQL查询的性能。这些涉及udfs,views,inline,join,pivot等。
经过相当多的测试,我可以说udfs非常慢,所以现在我将它们扩展到我的查询中。但随着性能测试的进行,分辨器变得更加困难,因为我得到了不一致的结果。
例如,我测试了一个充满连接的查询和一个将一些连接移动到内联选择的查询。内联样式的表现越来越好,直到我将所有连接移动到内联选择,它的表现比原来的要差得多。
另一件事是执行时间,这是非常不可靠的。对于相同的查询,执行时间也会变化并且不一致。就像我打开SQL Profiler一样,即使我看到更高的CPU时间,Reads,Writes,执行时间也会更快!
我真的需要一个尽可能公平的好方法来测试SQL查询。执行计划没有帮助。我需要数字,如CPU周期(不是经过时间),读取,写入,内存,我可以计算和一致的东西。我需要一种强制相同测试环境的方法。我尝试了DBCC DROPCLEANBUFFERS,但这没有帮助。
谢谢!