【发布时间】:2013-04-07 11:22:03
【问题描述】:
我有一个包含 50 列和大约 10 列 (FK) 的非聚集索引的表。该表包含大约 1000 万条记录。
我的问题是:在更新表中的 10k 行期间索引何时更新(更新包括索引列)?是在每行更新后发生还是在整个更新完成后发生?
问题是更新时间很长,我们收到一个数据库连接超时。如何提高更新时间?我无法在更新之前删除索引并在以后重建它们,因为该表在更新期间也被大量使用。
【问题讨论】:
-
索引被更新......当它们被更新时。如果它们是非聚集索引并且您没有更改它们的键或覆盖列,它们可能永远不会更新。看执行计划。如果您的连接超时但您确信更新将完成,那么您可能遇到了默认超时不适合您的情况。如果您不能将更新分解成更小的部分,也许您可以尝试或多或少的积极锁定。以此类推。
-
索引以减慢更新速度为代价提高选择和读取数据。如果您通常做的更新多于选择,索引可能会适得其反
标签: sql sql-server tsql indexing