使用外键约束快速插入表中

时间:2017-12-06 21:16:33

标签: python postgresql psycopg2

我必须定期将数据插入到表#1中,该表包含对表#2的外键引用。表#2非常大 - 大约200,000行。我试图通过简单地删除那些肯定无法插入的行来检查必须插入到表#1中的外键约束的行,并且我的查询如下所示:

DELETE FROM temp_table1
WHERE temp_table1.fk NOT IN (SELECT id FROM table2) AND
temp_table1.id_d IS NOT NULL;

问题是,这种方法很慢:(那么在这种情况下是否有任何"对"方法插入行?

我使用Python3,Postgresql和Psycopg2,如果重要的话。

1 个答案:

答案 0 :(得分:0)

您不需要delete步骤。 insert直接改为:

insert into table1
select t1.*
from 
    temp_table1 t1
    inner join
    table2 t2 on t1.fk = t2.id
where t1.id_d is not null