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

Perché un UPDATE richiede molto più tempo di un SELECT?

  • Scrittura del file di registro delle transazioni
  • aggiornamenti dell'indice
  • Ricerche di chiavi esterne
  • cascate di chiavi straniere
  • viste indicizzate
  • colonne calcolate
  • verifica i vincoli
  • serrature
  • chiusure
  • escalation del blocco
  • isolamento dell'istantanea
  • Mirroring DB
  • crescita dei file
  • altri processi di lettura/scrittura
  • Separazioni di pagina/indice cluster non idoneo
  • eventi di overflow puntatore in avanti/riga
  • Indici scadenti
  • statistiche non aggiornate
  • Disposizione del disco scadente (ad es. un grande RAID per tutto)
  • Verifica i vincoli con le UDF che hanno accesso alle tabelle
  • ...

Anche se il solito sospetto è un trigger ...

Inoltre, la tua condizione extra non ha significato:come fa SQL Server a ignorarla? Viene comunque generato un aggiornamento con la maggior parte del bagaglio... anche il grilletto si attiverà comunque. I blocchi devono essere mantenuti durante la ricerca delle righe per le altre condizioni, ad esempio

Modificato settembre 2011 e febbraio 2012 con più opzioni