【发布时间】:2019-12-12 15:29:58
【问题描述】:
我有一种情况,我正在从备份中修复数据。
表 MAIN TABLE (PrimaryKey, Value) 和表 BACKUP(PRIMARYKEY, Value)。
我想在主表中找到 value=0 的所有记录,然后从表 BACKUP 中获取相同主键的值并更新主表。
- 有 2000 万条 value=0 的记录
- 更新和获取都使用主键完成
问题
存储过程?脚本?
获取和更新是在同一张表上完成的吗?有什么问题吗?
您认为这需要多长时间 - 棒球场数字。如何测试?
我在想的解决方案:
使用我的条件(值 = 0)在表 Main 上打开一个游标,然后从 BACKUP 中获取值,然后进行更新。在循环中提交每 10K 更新
有什么想法吗?
【问题讨论】:
-
“有 2000 万条 value=0 的记录” - 那么
value <> 0有多少? -
您可以进行服务中断吗? MAIN 表是否必须 24/7 可用?
-
@APC - 500 万
-
@PavelBrziák。如果这需要发生,我们可以要求一个。你认为我们需要一次服务中断。记录仅添加到此表中 - 从未更新
标签: oracle performance bulk-operations