我的表A包含keycol,col2,col3,表B也包含其他列。想要使用表A中的值更新表B列,并为每10k更新提交一次。下面是我正在尝试运行的查询但想要使用游标并每10k更新一次。
UPDATE b
SET
column2 = a.column2,
column3 = a.column3
FROM a
WHERE a.id = b.id
答案 0 :(得分:0)
首先,您需要了解哪些记录尚未更新(并且可能添加具有相应条件的部分索引,以加快更新速度)。
我认为它是b.column2 is null
(b.column2 is null
的记录尚未更新)。
在这种情况下,您的查询可能是:
update b
set column2 = a.column2, column3 = a.column3
from a
where
a.id = b.id
and b.id in (
select id
from b
where column2 is null
order by id
limit 10000
)
;
索引加快速度:
create index i_b_tmp on b using btree(id) where column2 is null;
如果你想手动运行一堆UPDATE,只需打开psql,执行第一次更新,然后输入\watch 0.1
- 它将每0.1秒重复一次查询。