SQL Server更新查询只更新表本身而不是索引

Sno*_*orm -2 sql-server indexing

我需要编写一个只更新表而不是索引的查询,因为我想更新一个int字段而不需要更新10个巨大的索引

Mar*_*ith 6

如果该int字段包含在任何索引定义中,则它们也必须更新.

出于明显的数据完整性原因,SQL Server不允许基表具有一个值而另一个索引具有另一个值.

如果该int字段未包含在任何索引定义中,则无论如何只会更新该表.

您可以禁用索引,但重新启用它们涉及重建整个索引.


gbn*_*gbn 5

这取决于你真正想做什么

保持索引与表数据一致是ACID中Consistency。这就是SQL Server和ACID兼容的RDBMS的工作方式。

在某些情况下,例如散装负载,您需要延迟此一致性。因此,如果您有这种用例,请删除或禁用索引。

如果禁用索引:

  • 它们将永远不会用于任何查询 -
  • 所有相关的唯一和外键等也将被禁用
  • 他们没有维护

如果您丢弃它们,则当然也不能使用它们。

大容量加载完成后,您可以再次启用或创建索引/约束。

如果这是您真正想要的,请阅读MSDN: