Heim >Datenbank >MySQL-Tutorial >Wie kann ich Millionen von Datenbankzeilen effizient nach ID in PostgreSQL löschen?
Hochleistungsdeletion von Millionen von PostgreSQL-Zeilen durch ID
Das Löschen von Millionen von Datenbankzeilen kann die Leistung stark beeinflussen. Dieser Artikel untersucht effiziente Strategien zum Entfernen von ungefähr zwei Millionen Zeilen aus einer PostgreSQL -Datenbank mithilfe einer Liste von IDs, die gemeinsame Engpässe behandeln.
Die Herausforderung:
Die Aufgabe beinhaltet das Löschen eines großen Datensatzes basierend auf einer bereitgestellten ID -Liste. Standardmethoden wie Stapeldeletion und Klauselfragen erweisen sich für diese Skala häufig ineffizient. IN
Optimale Lösungen:
Der beste Ansatz hängt von mehreren Faktoren ab:
VACUUM ANALYZE
<code class="language-sql">BEGIN; SET LOCAL temp_buffers = '1000MB'; CREATE TEMP TABLE tmp AS SELECT t.* FROM tbl t LEFT JOIN del_list d USING (id) WHERE d.id IS NULL; -- copy remaining rows TRUNCATE tbl; -- clear the table INSERT INTO tbl SELECT * FROM tmp; -- re-insert remaining data COMMIT;</code>
DELETE
Für kleinere Tabellen kann TRUNCATE
schneller sein als , da es Auslöser und ausländische Schlüsselbeschränkungen beibehält. DELETE
TRUNCATE
TRUNCATE
löst TRUNCATE
Post-Deletion ON DELETE
(oder VACUUM
Das obige ist der detaillierte Inhalt vonWie kann ich Millionen von Datenbankzeilen effizient nach ID in PostgreSQL löschen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!