重新编译SQL Server存储过程是什么意思?

7
重新编译SQL Server上的存储过程是什么意思?这个过程应该是手动的还是自动的?这个过程有什么优缺点?谢谢!
2个回答

10

这严格是SQL Server内部操作。

当数据库进行诸如添加索引或更改索引列中的数据等操作时,用于访问其表的原始查询计划应通过重新编译进行优化。

这里是关于重新编译存储过程的MSDN文章:http://msdn.microsoft.com/en-us/library/ms190439.aspx

当您发出 ALTER PROC 语句时,也会导致存储过程的重新编译。


2
请问给我点踩的人能解释一下为什么我的回答对问题没有提供任何价值和帮助吗? - p.campbell

2
使用Recompile会使SQL Server重新编译SP,因此数据库引擎将创建新的执行计划,而不是使用相同SP的现有计划。
它可以是自动化和手动过程,具体取决于您的要求。您可以在SP中包括RECOMPILE“提示”,以便每次执行时都重新编译SP。或者运行
Exec sp_recompile N'yourSP'
进行手动重新编译。
正如@Michael所提到的,太多的重新编译可能非常糟糕,因为对于每个编译,数据库引擎必须创建新的执行计划,这可能是昂贵的操作。因此,通常应避免自动重新编译SP,甚至在生产环境中使用手动重新编译之前,应首先在开发环境中进行测试,以确保它确实有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接