我有一个包含50列和非聚集索引的表,大约有10列(FK)。该表包含大约1000万条记录。
我的问题是:在表中更新10k行期间更新索引的时间(更新包括索引列)?是在每行更新后还是在整个更新完成后发生?
问题是更新很长,我们收到数据库连接超时。如何改善更新时间?我无法在更新之前删除索引并在以后重建它们,因为在更新期间也会大量使用该表。
答案 0 :(得分:3)
您应该对表进行分区并尝试使用本地索引。 通过分区,您可以对表数据进行划分,以便您可以对相关数据进行操作。
本地索引也意味着索引也被分区,因此速度将大幅提升。
请看一下这个链接:http://msdn.microsoft.com/en-in/library/ms190787.aspx
答案 1 :(得分:0)
我们有一个庞大的系统,主表也有几百万条记录....至少它曾经用过。我们将超过6个月的数据移到存档表中。通常,旧的数据仅用于报告目的。通过这样做,我们能够大大提高我们的实时系统的性能。话虽如此,这可能不适合你。
答案 2 :(得分:0)
索引是否碎片化(更新表和FK表)?
列的类型是否为空?
你能忍受脏读(nolock)吗?
你可以不检查FK禁令吗?
请发布更新声明?
我相信你正在检查不会更新相同的值。
update tt
set col1 = 'newVal'
where col1 <> 'newVal'
如果这些索引处于良好状态,则10 K行的更新应该非常快 填充因子可能会有所帮助。