简单更新查询花费的时间太长-Postgres

我有一个要更新的2800万行的表。它具有约60列和一个ID列(主键),并在其上创建了索引。我创建了四个新列,并希望用来自其他表的四个列的数据填充它们,该表也有一个ID列,并在上面创建了索引。两个表具有相同数量的行,并且IDENTI列上只有主键和索引。该查询已经运行了15个小时,并且由于它是高优先级的工作,因此我们开始对此感到不安,并且我们没有太多时间来进行查询实验。我们从未更新过如此大的表(7 GB),因此我们不确定该时间是否正常。

这是查询:

UPDATE consolidated
SET IDEDUP2=uni.IDEDUP2
USE21=uni.USE21
USE22=uni.USE22
PESOXX2=uni.PESOXX2
FROM uni_group uni, consolidated con
WHERE con.IDENTI=uni.IDENTI

我怎样才能使其更快?可能吗?如果不是,是否有办法检查所需时间(不取消进程)?

就像其他信息一样,我们已经对300万行表(postgis)进行了更为复杂的查询,并且还花了大约15个小时。

a_horse_with_no_name

你应该重复目标表在FROM子句中。您的语句创建consolidated表与其自身的笛卡尔连接,这不是您想要的。

您应该使用以下内容:

UPDATE consolidated con
   SET IDEDUP2=uni.IDEDUP2
       USE21=uni.USE21
       USE22=uni.USE22
       PESOXX2=uni.PESOXX2
FROM uni_group uni
WHERE con.IDENTI = uni.IDENTI

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章