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

Warum gilt es als schlechte Praxis, Cursor in SQL Server zu verwenden?

Weil Cursor Speicher verbrauchen und Sperren erstellen.

Was Sie wirklich tun, ist der Versuch, satzbasierte Technologie in nicht satzbasierte Funktionalität zu zwingen. Und fairerweise sollte ich darauf hinweisen, dass Cursor tun haben einen Nutzen, sind aber verpönt, weil viele Leute, die es nicht gewohnt sind, mengenbasierte Lösungen zu verwenden, Cursor verwenden, anstatt die mengenbasierte Lösung herauszufinden.

Aber wenn Sie einen Cursor öffnen, laden Sie diese Zeilen im Grunde in den Speicher und sperren sie, wodurch potenzielle Blöcke erstellt werden. Während Sie dann durch den Cursor blättern, nehmen Sie Änderungen an anderen Tabellen vor und halten dennoch den gesamten Speicher und die Sperren des Cursors offen.

All dies kann zu Leistungsproblemen für andere Benutzer führen.

Daher sind Cursor in der Regel verpönt. Vor allem, wenn dies die erste Lösung ist, die bei der Lösung eines Problems gefunden wird.