Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server DROPCLEANBUFFERS在SQL Server中不工作_Sql Server - Fatal编程技术网

Sql server DROPCLEANBUFFERS在SQL Server中不工作

Sql server DROPCLEANBUFFERS在SQL Server中不工作,sql-server,Sql Server,我有一个正在尝试优化的存储过程。为了知道一次执行需要花费多少时间,我在脚本开头添加了: use MyDatabase go CHECKPOINT; GO DBCC DROPCLEANBUFFERS; GO 在两次执行之间,我可以看到运行查询的时间在减少。我以为只有缓存可以加快脚本的执行,SQL Server中是否有其他机制可以实现这一点 谢谢,第一次运行存储过程时,将计算并编译查询计划。这通常需要20毫秒,对于一个较长的过程来说可能会多一点 如果在检查点之前运行一次查询;dbcc缓冲区,

我有一个正在尝试优化的存储过程。为了知道一次执行需要花费多少时间,我在脚本开头添加了:

use MyDatabase
go
CHECKPOINT; 
GO 
DBCC DROPCLEANBUFFERS; 
GO
在两次执行之间,我可以看到运行查询的时间在减少。我以为只有缓存可以加快脚本的执行,SQL Server中是否有其他机制可以实现这一点


谢谢,

第一次运行存储过程时,将计算并编译查询计划。这通常需要20毫秒,对于一个较长的过程来说可能会多一点


如果在
检查点之前运行一次查询;dbcc缓冲区,应该缓存该计划。

也许您也在寻找?您还应该看看如何使用查询执行计划来优化查询,而不是每次更改时都破坏缓存。thx swasheck。我的问题更多的是关于sql server的内部结构。为了解释为什么没有缓存的完全相同的查询每次使用时都会更快。因为正如Andomar回答的那样,优化器也存储了计划,所以它不必重新编译计划-它只是从内存中提取计划。你的意思是:因为我已经运行过一次查询。下次运行它时,无论是否使用heckpoint;dbcc dropcleanbuffers;,查询计划已经计算和编译,因此sql server不会再次执行此操作?没有命令可以每次运行都重新计算和重新编译整个查询计划?啊,好的,告诉我swasheck。。好的,现在我明白了。谢谢你们两位!