Любая проблема с производительностью будет select
, а не insert
.Я думаю, что это эквивалентный запрос:
INSERT INTO mdm_id_relation (pat_key, hub_pat_id, msa_pat_id, pat_id) -- always list the columns!
SELECT pat_key, hub_pat_id, msa_pat_id, pat_id
FROM ods_raw_patient_mdm_process p1
WHERE EXISTS (SELECT 1
FROM mdm_id_relation mir
WHERE mir.pat_id = p1.pat_id
) AND
NOT EXISTS (SELECT 1
FROM mdm_id_relation mir
WHERE p1.pat_key = mir.pat_key
);
Для этого запроса вы хотите два индекса: mdm_id_relation(pat_id)
и mdm_id_relation(pat_key)
.Это должно сильно повлиять на производительность.
Примечание. Прежде чем выполнять вставку, сначала проверьте select
.