sql >> Database >  >> RDS >> Sqlserver

Waarom wordt het als een slechte gewoonte beschouwd om cursors in SQL Server te gebruiken?

Omdat cursors geheugen in beslag nemen en sloten creëren.

Wat je echt doet, is proberen om set-gebaseerde technologie te forceren in niet-set-gebaseerde functionaliteit. En, in alle eerlijkheid, moet ik erop wijzen dat cursors doen hebben een nut, maar ze worden afgekeurd omdat veel mensen die niet gewend zijn om set-gebaseerde oplossingen te gebruiken, cursors gebruiken in plaats van de set-gebaseerde oplossing uit te zoeken.

Maar wanneer u een cursor opent, laadt u in feite die rijen in het geheugen en vergrendelt u ze, waardoor potentiële blokken ontstaan. Terwijl u door de cursor bladert, brengt u wijzigingen aan in andere tabellen en houdt u nog steeds al het geheugen en de vergrendelingen van de cursor open.

Dit alles kan prestatieproblemen veroorzaken voor andere gebruikers.

Over het algemeen worden cursors dus afgekeurd. Vooral als dat de eerste oplossing is die is gevonden bij het oplossen van een probleem.



  1. Slaapstand en database met meerdere tenants met behulp van schema's in PostgreSQL

  2. MySQL integer veld wordt geretourneerd als string in PHP

  3. Retourneer alleen rij als waarde niet bestaat

  4. Hoe krijg ik met MS SQL een duidelijke lijst van woorden die in alle Field Records worden gebruikt?