删除索引后,我应该重新编译表吗?

时间:2014-10-15 12:45:50

标签: sql-server sql-server-2008 sql-server-2008-r2 indexing sql-server-2012

我正在删除一些未使用的索引。

我通常做的是:

  1. 确保统计信息已更新 - 可能未使用索引,因为统计信息暂时未更新

  2. 为所涉及的每个索引生成drop index脚本和create index脚本

  3. 运行drop indexes命令

  4. update statistics tablename - 以便更新用于生存的表索引的统计信息

  5. sp_recompile 'tablename',其中的索引曾经存在

  6. 问题:我真的需要做sp_recompile吗? 有什么建议吗?

    http://msdn.microsoft.com/en-us/library/ms181647.aspx

1 个答案:

答案 0 :(得分:0)

删除/重建索引将导致使用此表/索引视图使任何缓存的执行计划失效。并且sql server将在下次执行时生成新的执行计划。

统计信息也是如此,更新统计信息将导致任何缓存的执行计划失效。并且sql server将在下次执行时生成新的执行计划。

没有看到任何理由让你明确告诉sql server使用这个对象重新编译执行计划(表,视图等)。