我必须定期将数据插入到表#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,如果重要的话。
答案 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