PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Zoptymalizuj usuwanie osieroconych rekordów w Postgres

Jednym z podejść do takich problemów może być robienie tego w mniejszych porcjach.

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

Opłucz, powtórz. Eksperymentuj z różnymi rozmiarami porcji, aby znaleźć optymalny dla swojego zestawu danych, który używa najmniejszej liczby zapytań, zachowując je wszystkie w pamięci.

Oczywiście chciałbyś to skryptować, prawdopodobnie w plpgsql lub w dowolnym preferowanym języku skryptowym.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hibernacja problemu z pobieraniem bajtów postgres

  2. Jak wykonać kopię zapasową partycjonowanej tabeli w PostgresSQL 10?

  3. BŁĄD PostgreSQL:INSERT ma więcej kolumn docelowych niż wyrażeń, jeśli tak nie jest

  4. pg_dump z --exclude-table nadal zawiera te tabele w uruchamianych w tle poleceniach KOPIUJ?

  5. Zakres Rails utworzony w ciągu miesiąca