您必须原谅我的天真,因为我不是 DBA,但我的理解是,随着时间的推移,必须重新编译数据库更改和存储过程的统计信息,以使查询计划与最新的统计信息保持同步。
假设我在我的数据库中的存储过程,在对重新编译的最新统计一些固定的间隔,是什么在衬里的存储过程的代码,并在包裹它的含义sp_executesql
的语句?我是否会丢失过去作为过程重新编译的一部分发生的查询计划的刷新?
如果在进行此更改之前我需要考虑其他任何事项(权限除外),那么我将不胜感激。
我在 MSDN 上读到这个:
SQL Server 查询优化器将新的 Transact-SQL 字符串与现有执行计划相匹配的能力受到字符串文本中不断变化的参数值的阻碍,尤其是在复杂的 Transact-SQL 语句中。
因此,假设我尝试内联和换行的存储过程sp_executesql
确实包含一些参数,这是否是说虽然我的执行计划已缓存,但我让 SQL Server 更难找到和重用它?