在Postgres中有条件地更新列的最快方法

时间:2018-05-24 10:53:48

标签: postgresql performance sql-update

我有两张桌子

create table A(id text, data text, has_b boolean default false);

create table B(id text, a_id text, data text);

没有主键,没有索引。 a_id中的字段table B将与id中的table A匹配。

如果has_b中引用了A.id,我想将字段B.a_id设置为true。 这是在创建数据库并插入所有数据后的一次更新,因此我可以根据需要对数据库进行任何操作。

目前我正在使用以下更新语句,但速度太慢(我有超过500万条记录需要更新)。

UPDATE A SET has_b = TRUE
WHERE EXISTS (SELECT 1 FROM B WHERE a_id = A.id limit 1);

我也试过这个,但效果相似:

UPDATE A SET has_B = TRUE FROM B WHERE a_id = A.id;

有没有更快的方法在数据库中进行此类更新?或者其他一些解决方案?

提前感谢任何建议。

0 个答案:

没有答案