PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Schnellste Möglichkeit, eine Löschabfrage in einer großen Tabelle in PostgreSQL auszuführen

Wenn diese Abfrage lange dauert:

delete from PlanItems p where p.jobId = :jobid

und Sie haben einen Index für PlanItmes(jobId) -- wobei jobId ist die erste Spalte im Index -- dann müssen Sie andere Probleme berücksichtigen.

  1. Gibt es Einschränkungen für kaskadierende Fremdschlüssel, die jobId verwenden? ? Wenn dies der Fall ist, können sich die Kaskaden auf diese Tabellen auswirken – und wenn es sich um kaskadierende Löschungen handelt, kann das Löschen dieser Zeilen weitere Tabellen betreffen.

  2. Gibt es einen Löschauslöser für die Tabelle? Wenn ja, machen Ihre "einfachen" Löschungen möglicherweise viel mehr Arbeit, als Sie denken.

  3. Ist das System stark ausgelastet? Wenn dies der Fall ist, wartet die Zeit möglicherweise einfach auf eine Gelegenheit, die Zeilen zu löschen.

  4. Werden materialisierte Ansichten auf der Tabelle erstellt? Wenn ja, werden sie möglicherweise aktualisiert.

Wenn dies nicht der Fall ist, liegt möglicherweise ein Problem darin, wie Sie die verstrichene Zeit messen.