Hello其他程序员。我有一个SQL Server 2005查询,第一次需要很长时间才能处理。第一次运行后,查询工作得更快。它从一分钟到一秒钟。
我知道SQL Server正在缓存执行计划(这是正确的术语吗?)。我想要做的是清除这个执行计划,以便我可以更好地复制问题。我正在尝试调整查询。
有谁知道这是否可能以及如何做到这一点?
先谢谢
答案 0 :(得分:16)
如果你想清除它,那么:
DBCC FreeProcCache
DBCC DropCleanbuffers
如果您只想每次强制执行查询重新编译,请在查询末尾添加查询提示:
OPTION (RECOMPILE)
答案 1 :(得分:3)
这就是我想要清除它时所运行的
DBCC freeproccache
DBCC dropcleanbuffers
go
如果我正在测试查询的性能,我通常只是将其粘贴在查询的顶部,以便每次运行时都使用清除缓存。
答案 2 :(得分:2)
警告:有时查询第二次运行得更快,因为服务器已经完成了磁盘IO并且仍然在RAM中有表。考虑在执行计划中查看IO成本。
答案 3 :(得分:1)
DBCC FREEPROCCACHE