在SQL Server上“重新编译”存储过程意味着什么? 这应该是手动过程还是自动过程? 这个过程的优点和缺点是什么? 谢谢!
答案 0 :(得分:7)
它严格来说是SQL Server中的内部操作。
由于通过添加索引或更改索引列中的数据等操作更改了数据库,因此应通过重新编译来再次优化用于访问其表的原始查询计划
这是MSDN's article on Recompiling Stored Procedures
当您发出ALTER PROC
语句时,您还会导致重新编译存储过程。
答案 1 :(得分:2)
使用重新编译使SQL Server重新编译为SP,因此数据库引擎不会使用相同SP的现有计划,而是创建新的执行计划。
根据您的要求,它可以是自动和手动过程。每次执行SP时都可以通过在SP中包含RECOMPILE“提示”来重新编译SP。或者运行
执行sp_recompile N'yourSP'
手动重新编译。
正如@Michael所提到的,太多的重新编译可能非常糟糕,因为每个编译数据库引擎都必须创建新的执行计划,这可能是昂贵的操作。所以一般应该避免自动重新编译SP,甚至手动重新编译也应该先在开发环境中进行测试,然后才能使用它来确保它真的有用。