我有一个约有2亿条记录的表,并在其中添加了2个新列。现在,这2列需要来自不同表的值。将近80%的行将被更新。
我尝试了更新,但需要两个多小时才能完成。
主表具有4列的复合主键。我删除了它,并删除了更新前列上存在的索引。现在更新只需要不到1个小时的时间。
还有其他方法可以加快此更新过程(如批处理)。
编辑:我在update语句的from子句中使用了另一个表(将从中匹配值以进行更新)。
不是。确保max_wal_size
足够高,以免获得过多的检查点。
更新后,表格会膨胀到其原始大小的两倍左右。如果您批量更新并且之间进行VACUUM
更新,则可以避免这种膨胀,但这不会使处理速度更快。