Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Warum dauert ein UPDATE wesentlich länger als ein SELECT?

  • Transaktionsprotokolldatei schreibt
  • Indexaktualisierungen
  • Fremdschlüsselsuche
  • Fremdschlüsselkaskaden
  • indizierte Ansichten
  • berechnete Spalten
  • Einschränkungen prüfen
  • Schlösser
  • Verriegelungen
  • Sperreneskalation
  • Snapshot-Isolierung
  • DB-Spiegelung
  • Dateiwachstum
  • andere Prozesse lesen/schreiben
  • Seitenteilungen / ungeeigneter geclusterter Index
  • Vorwärtszeiger-/Zeilenüberlaufereignisse
  • schlechte Indizes
  • Statistiken veraltet
  • schlechtes Plattenlayout (z. B. ein großes RAID für alles)
  • Überprüfen Sie Einschränkungen mit UDFs, die Tabellenzugriff haben
  • ...

Obwohl der übliche Verdächtige ein Auslöser ist ...

Außerdem hat Ihre zusätzliche Bedingung keine Bedeutung:Woher weiß SQL Server, dass sie ignoriert werden soll? Mit dem größten Teil des Gepäcks wird immer noch ein Update generiert ... sogar der Trigger wird immer noch ausgelöst. Sperren müssen gehalten werden, während Zeilen zum Beispiel nach anderen Bedingungen durchsucht werden

Bearbeitet September 2011 und Februar 2012 mit mehr Optionen