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