2017-12-06 1 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"필드를 가지고 있으며 "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 
관련 문제