来自另一个表的DB2大更新

时间:2014-01-20 13:36:39

标签: sql plsql db2 sql-update database-performance

我有一张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一起使用。

0 个答案:

没有答案