En tilgang til problemer som dette kan være at gøre det i mindre bidder.
DELETE FROM "contacts"
WHERE "contacts"."id" IN (
SELECT id
FROM contacts
LEFT OUTER JOIN members ON members.contact_id = contacts.id
WHERE members.id IS NULL
AND id >= 1 AND id < 1000
);
DELETE FROM "contacts"
WHERE "contacts"."id" IN (
SELECT id
FROM contacts
LEFT OUTER JOIN members ON members.contact_id = contacts.id
WHERE members.id IS NULL
AND id >= 1001 AND id < 2000
);
Skyl, gentag. Eksperimenter med forskellige chunkstørrelser for at finde en optimal til dit datasæt, som bruger de færreste forespørgsler, samtidig med at de alle gemmes i hukommelsen.
Naturligvis vil du gerne scripte dette, muligvis i plpgsql, eller i hvilket scriptsprog du foretrækker.