如何解决添加SQL Server索引,但是如何仅重新编译受影响的存储过程?
您可以执行sp_recompile并提供刚刚建立索引的表名。依赖于该表的所有proc将从存储的proc缓存中清除,并在下次执行时“编译”
从msdn文档中看到此内容: sp_recompile(Transact-SQL)
解决方法
我需要向表中添加索引,并且只想重新编译/引用该表的所有存储过程。有什么快速简便的方法吗?
编辑:
从SQL Server 2005联机丛书中,重新编译存储过程:
当通过添加索引或更改索引列中的数据等操作更改数据库时,应通过重新编译来再次优化用于访问其表的原始查询计划。重新启动Microsoft SQL Server
2005后,第一次运行存储过程时,会自动自动进行此优化。如果存储过程使用的基础表发生更改,也会发生这种情况。
但是,如果添加了新索引,存储过程可能会从中受益,那么直到重新启动Microsoft SQL Server之后下一次运行存储过程时,优化才会发生。
在这种情况下,强制存储过程在下次执行时重新编译可能会很有用。
迫使存储过程重新编译的另一个原因是,在必要时抵消存储过程编译的“参数嗅探”行为。当SQL
Server执行存储过程时,该过程在编译时使用的任何参数值都将包含在生成查询计划中。如果这些值代表随后调用过程的典型值,则存储过程在每次编译和执行时都会从查询计划中受益。否则,性能可能会受到影响
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。