Sql server 重置SQL Server执行计划

Sql server 重置SQL Server执行计划,sql-server,sql-execution-plan,Sql Server,Sql Execution Plan,我已经到处寻找这个命令……重置SQL Server执行计划的命令是什么?对于存储过程,您可以使用带重新编译的选项。sp\u重新编译将转储现有的查询计划并重新编译过程。 或者,您可以重新启动SQL,这将清除整个执行计划缓存 WITH RECOMPILE将在每次执行时生成一个新的计划。如果要为存储过程重置QEP,则应使用您的问题并不完全清楚您想要的是什么。但除了其他建议之外,DBCC FREEPROCCACHE还清除所有缓存的执行计划。为了清晰起见 执行sp_recompile将“标记”给定的存储过

我已经到处寻找这个命令……重置SQL Server执行计划的命令是什么?

对于存储过程,您可以使用带重新编译的
选项。

sp\u重新编译将转储现有的查询计划并重新编译过程。 或者,您可以重新启动SQL,这将清除整个执行计划缓存


WITH RECOMPILE将在每次执行时生成一个新的计划。

如果要为存储过程重置QEP,则应使用

您的问题并不完全清楚您想要的是什么。但除了其他建议之外,DBCC FREEPROCCACHE还清除所有缓存的执行计划。

为了清晰起见

执行
sp_recompile
将“标记”给定的存储过程以进行重新编译,该过程将在下次执行时发生

使用带重新编译的
选项将导致在每次执行给定存储过程时生成新的执行计划

要清除整个过程,请执行缓存

DBCC FREEPROCCACHE

+1啊哈!!现在事情开始变得有意义了:-)您更擅长解读不清楚的用户消息,我必须明白…请注意,此方法每次执行时都会重新编译给定的存储过程,因此如果您希望强制一次性重新编译,则使用系统存储过程sp_recompile。这是一个很小但很重要的区别,执行sp_recompile不会重新编译给定的存储过程,而是在下次执行时将其标记为重新编译。DBCC FREEPROCCACHE能否仅针对特定的过程执行?@code米兰:是的,您可以从计划/过程缓存中逐出特定的计划句柄(例如,给定存储过程的查询计划)。有关示例,请参见BOL: