Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

L'istruzione Delete in SQL è molto lenta

Cose che possono rallentare un'eliminazione:

  • eliminando molti record
  • molti indici
  • indici mancanti sulle chiavi esterne nelle tabelle figlie. (grazie a @CesarAlvaradoDiaz per averlo menzionato nei commenti)
  • Blocchi e blocchi
  • trigger
  • Eliminazione a cascata (i dieci record principali che stai eliminando potrebbero comportare l'eliminazione di milioni di record secondari)
  • Il registro delle transazioni deve crescere
  • Tante chiavi esterne da controllare

Quindi le tue scelte sono scoprire cosa sta bloccando e risolverlo o eseguire le eliminazioni nelle ore di riposo quando non interferiranno con il normale carico di produzione. È possibile eseguire l'eliminazione in batch (utile se si dispone di trigger, eliminazione a cascata o un numero elevato di record). Puoi eliminare e ricreare gli indici (meglio se puoi farlo anche nelle ore di riposo).