PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Оптимизирайте Postgres изтриването на осиротели записи

Един подход към проблеми като този може да бъде да го направите на по-малки парчета.

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

Изплакнете, повторете. Експериментирайте с различни размери на парчета, за да намерите оптимален за вашия набор от данни, който използва най-малко заявки, като същевременно ги запазва в паметта.

Естествено, бихте искали да го скриптирате, евентуално на plpgsql или на който и да е скриптов език, който предпочитате.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Много заявки за SHOW TRANSACTION ISOLATION LEVEL в postgres

  2. INSERT и сериализация на транзакция в PostreSQL

  3. Как мога да променя името на базата данни в AWS RDS за Postgresql?

  4. Странна грешка при подреждане (бъг ли е?) при подреждане на две колони с еднакви стойности

  5. Ключови неща, които трябва да наблюдавате в PostgreSQL – анализиране на вашето работно натоварване