2012-01-23 121 views
1

我需要在SQL Server数据库中禁用自动索引,基本上我想控制何时发生索引(例如,在晚上)。在sql server中禁用自动索引

我不想用表来禁用索引,比如像:

ALTER INDEX [IX_NAME] ON SCHEMA.TABLE DISABLE 

有谁知道如何实现这一目标?

+0

你在谈论什么样的自动索引? – JNK

+2

您可以禁用一个索引 - 但它从来没有使用(也从未更新)。如果您的索引已启用,即用于加快查询速度,则**不能**关闭自动索引维护。这是SQL Server--它为你做到了这一点,它不像在dBase的日子里,你手动更新索引是你的负担。 –

+0

这正是我想要的......我相信Oracle也支持它。 – rpvilao

回答

2

您可以按照概述的here禁用索引,但在重新启用它之前,它不会用于查询数据。您不能禁用索引并仍然在查询中使用索引,否则可能导致结果不正确或不一致。

+0

你是对的,但这不是我相信的借口。在Oracle中,您可以指定何时重建索引。如果引擎应该使用索引,跟踪并不难。它只是将其标记为已损坏或类似的东西... – rpvilao

+1

我很想看到关于这方面的Oracle文档。我很难相信它支持既可查询又延迟重建的索引。 –

+0

最近我能想到的是,Oracle支持按需刷新物化视图。 https://docs.oracle.com/database/121/DWHSG/refresh.htm#DWHSG015就我所知,SQL Server不适用于其索引视图。 –