sql >> Databasteknik >  >> RDS >> PostgreSQL

Optimera Postgres-radering av föräldralösa poster

Ett sätt att hantera problem som detta kan vara att göra det i mindre bitar.

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
);

Skölj, upprepa. Experimentera med olika chunkstorlekar för att hitta en optimal för din datamängd, som använder minsta möjliga frågor, samtidigt som alla behålls i minnet.

Naturligtvis skulle du vilja skripta detta, möjligen i plpgsql, eller på vilket skriptspråk du föredrar.



  1. MySQL hierarkisk datahjälp - Closure Table Method

  2. Fråga efter element av array i JSON-kolumnen

  3. PHP MySql okänd servervärd

  4. set-valued funktion anropad i kontext som inte kan acceptera en uppsättning