如何加快此更新声明的速度

时间:2017-02-01 18:27:54

标签: postgresql sql-update

想知道是否有办法让SQL语句更快。

UPDATE table_one SET column_x = table_two.column_x FROM table_two
WHERE table_one.column_y = table_two.column_y;

目前上述查询已运行了3个多小时。关于如何加快速度的任何建议?

详细信息:

  • table_one有1.9亿条记录
  • table_two有3.9亿条记录
  • 两个表中的column_x和column_y都是整数。
  • 两个表中的column_y已编入索引

我在拥有120GB RAM和22个核心的VM上运行Postgresql 9.3。

1 个答案:

答案 0 :(得分:3)

您至少不需要更新所有记录:

UPDATE table_one
      SET column_x = table_two.column_x
     FROM table_two
      WHERE table_one.column_y = table_two.column_y
        AND table_one.column_x != table_two.column_x;

同样可能有帮助的是为两个表创建字段x和y的索引。