【发布时间】:2023-05-12 08:01:01
【问题描述】:
我有大约 200,000,000 行,我正在尝试更新其中一列,这个查询似乎特别慢,所以我不确定到底是哪里出了问题,或者只是速度很慢。
UPDATE table1 p
SET location = a.location
FROM table2 a
WHERE p.idv = a.idv;
我目前正在为两张桌子使用 idv。有什么办法可以加快速度吗?
【问题讨论】:
-
为什么一开始就复制数据?如果您确实需要该位置,您不能只从 table1 中删除列并简单地加入 table2 吗?
-
为了降低对数据库的性能影响,您可以将更新拆分为更小的块。你更新整张桌子吗?如果您更新大部分表,您可以创建具有相同结构的新表并在该表中选择新数据,更改切换表名称,然后丢弃旧表。
-
更新 200,000,000 行需要一段时间。如果不量化这种缓慢,就无法知道它是常见的还是异常的。
-
@jjanes 它已经过了一夜,所以大概有 10 个小时,它还没有完成
-
如果某些数据不需要更新,那么在 WHERE 中检查可以减少写入。前任。
WHERE p.idv = a.idv and p.location <> a.location
标签: postgresql