PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Il modo più veloce per eseguire una query di eliminazione in una tabella di grandi dimensioni in PostgreSQL

Se questa query richiede molto tempo:

delete from PlanItems p where p.jobId = :jobid

e hai un indice su PlanItmes(jobId) -- dove jobId è la prima colonna dell'indice, quindi devi considerare altri problemi.

  1. Esistono vincoli di chiave esterna a cascata che utilizzano jobId ? In tal caso, le cascate potrebbero influire su tali tabelle e, se si tratta di eliminazioni a cascata, l'eliminazione di tali righe potrebbe influire su più tabelle.

  2. C'è un trigger di eliminazione sul tavolo? In tal caso, le tue "semplici" eliminazioni potrebbero fare molto più lavoro di quanto pensi.

  3. C'è un carico pesante sul sistema? In tal caso, il tempo potrebbe semplicemente essere in attesa di un'opportunità per eliminare le righe.

  4. Le viste materializzate sono costruite sul tavolo? In tal caso, potrebbero essere aggiornati.

Se nessuno di questi è il caso, allora potrebbe essere un problema su come stai misurando il tempo trascorso.