2017-12-06 12 views
0

テーブル#2への外部キー参照を含むテーブル#1にデータを定期的に挿入する必要があります。テーブル#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を使用してい

、それが重要な場合:(veeery遅いです。

+0

「もしそれが問題ならば。」いいえ、それは問題ではありません。 *重要なことはキーとインデックスを含むテーブル定義です。 – wildplasser

+0

@wildplasserさて、table1にはtable2の主キー "id"を参照するフィールド "fk"があり、table2には "id"フィールドのインデックスもあります。 –

答えて

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 
関連する問題