问题
更新数千万行表的列的最佳方法是什么?
1)我看到创建一个新表并在完成后重命名旧表
2)我看到使用临时表批量更新
3)我看到了单笔交易(虽然不喜欢这个)
4)永远不要听游标解决这样的问题,我认为不值得尝试
5)我读过关于从文件加载数据(使用 BCP),但没有读到性能是否更好。不清楚它是否只是复制,或者它是否允许加入一个带有某些东西的大表,然后是公牛复制。
真的很想在这里有一些建议。
优先级是性能
目前我正在测试解决方案 2) 和探索解决方案 5)
附加信息(更新)
谢谢你在这里的批判性思维。
- 该操作在停机时间内完成。
- UPDATE 不会导致行转发
- 所有的表都有索引,平均有 5 个索引,虽然很少有表有 13 个索引。
- 目标列的概率出现在表索引之一中,例如 50%。
- 有些表可以重建和替换,有些则不能,因为它们是软件解决方案的一部分,我们可能会失去对这些表的支持。从那些表中,一些得到了触发器。
- 我需要为 600 多个表执行此操作,其中 ~150 的范围从 80 万到 3500 万行
- 更新始终在各个字段的同一列中
参考