我需要编写一个只更新表而不是索引的查询
因为我想更新int
字段而不需要更新10个巨大的索引
答案 0 :(得分:6)
如果int
字段包含在任何索引定义中,那么它们也必须更新。
由于显而易见的数据完整性原因,SQL Server不允许基表具有一个值而另一个索引具有另一个值。
如果int
字段未包含在任何索引定义中,则无论如何只会更新表。
您可以禁用索引,但重新启用它们涉及重建整个索引。
答案 1 :(得分:5)
这取决于你想要做什么
保持索引与表数据一致是Consistency in ACID。这就是SQL Server和ACID兼容的RDBMS的工作方式。
在某些情况下,例如批量加载,您希望延迟此一致性。因此,如果您有此用例,请删除或禁用索引。
如果禁用索引:
如果你把它们掉落,当然也不能使用它们。
批量加载完成后,再次启用或创建索引/约束。
如果这是你真正想要的,请阅读MSDN:
答案 2 :(得分:1)
或许Filtered Indexes正是您所寻找的。 p>
这是一个SQL Server 2008
功能,可让您创建仅适用于列中某些值的索引。