重新编译存储过程

时间:2013-11-26 10:01:34

标签: sql sql-server sql-server-2008 stored-procedures

我已将非聚集索引添加到某些表中,

我是否需要重新启动或重新编译所有存储过程以获得新索引的好处。

怎么做?

3 个答案:

答案 0 :(得分:3)

不,你不需要。当存储过程尝试从您的表中获取数据时,查询优化器将看到您的某些表有一个索引,它将构建相应的执行计划,然后将其传递给执行引擎,以便执行。

答案 1 :(得分:0)

是。您需要重新编译存储过程以利用新索引。

有完整的解释here

答案 2 :(得分:0)

您需要重新编译存储过程(触发器,函数),但是您不需要逐个执行,您可以使用sp_recompile 'TableName'并且SQL将重新编译所有存储过程,引用您的存储过程表并获得新索引的好处(你不会错过一个)。

跟进:我留下我的帖子 - 仍然是BOL答案 - 但正确答案似乎是:不,你没有(见其他帖子)