我有一张600 000+行的表名为asset。客户添加了一个新列,并希望使用另一个表中的值填充:
ASSET TEMP
| id | ... | newcol | | id | condition |
--------------------- ------------------
|0001| ... | - | |0001| 3 |
如果我尝试一次更新所有内容,它会超时/声称存在死锁:
update asset set newcol = (
select condition from temp where asset.id = temp.id
) where newcol is null;
我绕过它的方式是一次只做100行:
update (select id, newcol from asset where newcol is null
fetch first 100 rows only) a1
set a1.newcol = (select condition from temp a2 where a1.id = a2.id);
目前我正在充分利用复制/粘贴实用程序,但我想知道更优雅的方法(以及更快的方式)。
我已经尝试将它放在PL / SQL循环中,但我似乎无法将它作为一个独立的脚本与DB2一起使用。