最近我在生产服务器上完成了重建索引.我是否需要重新编译所有现有的存储过程才能实现此功能.请建议.
是的,您应该重新编译存储过程(您可以使用sp_recompile).更改表结构会强制执行新的执行计划,但只添加索引不会.当您重新启动Sql Server时,这将具有相同的效果.
由于通过添加索引或更改索引列中的数据等操作更改了数据库,因此应通过重新编译来再次优化用于访问其表的原始查询计划.重新启动SQL Server后第一次运行存储过程时,将自动执行此优化.如果存储过程使用的基础表发生更改,也会发生此问题.但是,如果添加了一个新索引,存储过程可能会从中受益,则在SQL Server重新启动后下次运行存储过程时才会进行优化.在这种情况下,强制存储过程在下次执行时重新编译会很有用