我有一个要更新的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个小时。
你应该不重复目标表在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] 删除。
我来说两句