2011-03-25 120 views
2

我正在做一些索引评估,我想禁用正在使用的索引。我没有在索引属性中选中'使用索引'选项,但是当我再次检查它以启用索引使用时,似乎它正在重建索引。这些是大型索引,有些需要3个小时才能重建。SQL禁用/重新启用索引

有没有办法在SQL 2008中快速禁用/启用索引?

+2

没有禁用索引时会造成重新启用它,它被重建。您可以使用查询提示来强制使用特定的替代索引。 – 2011-03-25 16:29:15

+0

很糟糕。为什么必须重建?我不能使用提示,因为我试图确定分析器是否将使用复合索引(使用两个或更多索引)。 – 2011-03-25 16:34:16

+1

[禁用视图上的非聚簇索引或聚簇索引物理删除索引数据。在表上禁用聚簇索引可防止访问数据;数据仍然保留在表中,但直到索引被删除或重建时才可用于DML操作。](http://msdn.microsoft.com/zh-cn/library/ms177406.aspx) – 2011-03-25 16:43:29

回答

0

数据库优化顾问可以添加假设索引和假设删除索引的效果,但我不认为这些功能是以任何方式暴露的,我们可以利用自己。

也许你可以create a statistics only copy of the database,如果你只是想尝试一下各种这样的场景(我没有尝试过这个我自己)

4

一旦您重新启用索引,索引将重建,因为禁用时发生的任何更新都会使索引过时并且无效。

+0

这是有道理的,但它很糟糕,因为没有更新。没有工作? – 2011-03-25 16:46:21

+0

我目前不知道的一种方式。我看到的最佳解决方案就是@Martin所说的。我假设你使用跟踪和SQL分析器? – slkull 2011-03-25 16:56:52