Das Löschen von 3,7 Millionen Zeilen ist sehr zeitaufwändig, da jede Zeile nachgeschlagen und anschließend protokolliert und gelöscht werden muss. Allein an all die Dirty Pages, Logging und Cache Misses zu denken, ist verblüffend – ganz zu schweigen von den Aktualisierungen der Indizes.
Aus diesem Grund kann so etwas viel schneller sein:
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;
Außerdem sollten Sie die Indizes vor dem Abschneiden löschen und danach neu erstellen.