您必须运行一个“最佳实践”
DBCC FREESESSIONCACHE
DBCC FREEPROCCACHE
DBCC DROPCLEANBUFFERS
在对 SQL 查询进行性能分析之前。
然而,例如,后一个 DROPCLEANBUFFERS:
使用 DBCC DROPCLEANBUFFERS 使用冷缓冲区缓存测试查询,而无需关闭并重新启动服务器。
要从缓冲池中删除干净的缓冲区,首先使用 CHECKPOINT 生成冷缓冲区高速缓存。这会强制将当前数据库的所有脏页写入磁盘并清理缓冲区。完成此操作后,您可以发出 DBCC DROPCLEANBUFFERS 命令从缓冲池中删除所有缓冲区。
我想,这意味着您将测试您的查询,就好像它是在服务器中运行的第一个查询一样,因此查询的实际“现实生活”影响会更低。
运行这三个命令来了解查询成本真的是可取的,还是它会让你得到一个与实际环境中的实际查询时间没有密切关系的经验结果?