Sletning af 3,7 millioner rækker er meget tidskrævende, på grund af omkostningerne ved at slå op i hver række og derefter logge og slette rækkerne. Bare det at tænke på alle de beskidte sider, logning og cache-misser er ufatteligt – for ikke at nævne opdateringer til indekserne.
Af den grund kan noget som dette være meget hurtigere:
create temporary table temp_n2p as
select n2p.*
from "target".name2phoneme n2p
where not exists (select 1
from delta.name2phoneme d
where n2p.NAME_ID = d.NAME_ID and
n2p.PHONEME_ID = d.PHONEME_ID
);
truncate table "target".name2phoneme;
insert into "target".name2phoneme
select *
from temp_n2p;
Du bør også droppe indekserne før trunkeringen og derefter genskabe dem bagefter.