我对postgresql(和一般的数据库)还不太熟悉,希望能得到一些关于提高下面语句效率的指针。
我正在将数据从一个表插入到另一个表,不希望插入重复的值。我有一个rid(每个表中的唯一标识符),它是索引的,并且是主键。
我目前正在使用以下语句:

INSERT INTO table1 SELECT * FROM table2 WHERE rid NOT IN (SELECT rid FROM table1).

截至目前,表1是200000条记录,表2是20000条记录。表1将继续增长(可能会达到200万左右),而表2将保持约20000条记录。到目前为止,该语句大约需要15分钟才能运行。我担心,随着表1的增长,这种情况会持续很久。有什么建议吗?

最佳答案

这应该比您当前的查询更有效:

INSERT INTO table1
SELECT *
FROM table2
WHERE NOT EXISTS (
  SELECT 1 FROM table1 WHERE table1.rid = table2.rid
);

关于postgresql - 有效地将数据插入表中,PostgreSQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13073415/

10-16 16:49