“这对”意味着什么;“重新编译”;SQL Server上的存储过程?

“这对”意味着什么;“重新编译”;SQL Server上的存储过程?,sql,sql-server,Sql,Sql Server,在SQL Server上“重新编译”存储过程意味着什么? 这是手动过程还是自动过程? 这个过程的利弊是什么? 谢谢大家! 严格来说,这是SQL Server内部的一个操作 当数据库通过添加索引或更改索引列中的数据等操作进行更改时,用于访问其表的原始查询计划应该通过重新编译来再次优化 这是 当您发出ALTER PROC语句时,也会导致对存储的过程进行重新编译。使用重新编译会使SQL Server重新编译到SP,因此,数据库引擎将创建新的执行计划,而不是对同一SP使用现有计划 根据您的要求,它可以是

在SQL Server上“重新编译”存储过程意味着什么? 这是手动过程还是自动过程? 这个过程的利弊是什么?
谢谢大家!

严格来说,这是SQL Server内部的一个操作

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

这是


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

使用重新编译会使SQL Server重新编译到SP,因此,数据库引擎将创建新的执行计划,而不是对同一SP使用现有计划

根据您的要求,它可以是自动的,也可以是手动的。每次执行SP时,您都可以通过在SP或run中包含重新编译“提示”来使其重新编译

Exec sp_重新编译N'yourSP'

手动重新编译


正如@Michael提到的,太多的重新编译可能非常糟糕,因为对于每个编译,数据库引擎必须创建新的执行计划,这可能是一个代价高昂的操作。因此,通常应该避免SP的自动重新编译,甚至在使用它进行生产之前,也应该首先在开发环境中测试手动重新编译,以确保它确实有帮助。

对于我的答案如何不能为这个问题提供好处和价值,您有什么解释吗?