Use*_*781 21 sql-server query-optimization
我如何比较两个查询X和Y并说X比Y更好,当他们在小情况下几乎占用相同的时间?
问题是我有两个应该在一个非常大的数据库上运行的查询,所以运行和评估不是一个选择.因此,我们创建了一个小型数据库来执行一些测试.评估哪个查询更好是一个问题,因为在我们的测试基础上,它们几乎在同一时间运行(大约5分钟).除了返回的时间之外,衡量查询有多好的另一种方法是什么?
Joe*_*lli 36
SET STATISTICS IO ON
SET STATISTICS TIME ON
Run Code Online (Sandbox Code Playgroud)
运行查询并比较各种表和执行时间的逻辑读取.
如前所述,检查执行计划。
重要的是,通过清除每次运行之间的缓存来公平地比较这两个查询,以确保您不会看到由于已经缓存的数据(不在生产服务器上运行)的影响而产生的偏斜结果:
DBCC DROPCLEANBUFFERS -- clear data cache
DBCC FREEPROCCACHE -- clear proc plan cache
Run Code Online (Sandbox Code Playgroud)
然后,我通常要做的是检查读取,写入,CPU和持续时间以进行比较。
使用生产级别的数据量进行测试非常重要(最好是查看其规模如何扩展)。在这些数量上,您将真正看到任何性能差异。使用小数据量进行测试可能会让您日后遇到问题。
| 归档时间: |
|
| 查看次数: |
19992 次 |
| 最近记录: |