Cursor verus While loop - Quels sont les avantages / inconvénients des curseurs?

StackOverflow https://stackoverflow.com/questions/139843

  •  02-07-2019
  •  | 
  •  

Question

Est-ce une bonne idée d'utiliser une boucle While au lieu d'un curseur? Quels sont les avantages / inconvénients des curseurs?

Était-ce utile?

La solution

Certaines dépendent du SGBD, mais généralement:

Avantages:

  • Surperformez les boucles en matière de traitement ligne par ligne

  • Fonctionne relativement bien avec de grands ensembles de données

Inconvénients:

  • Ne redimensionnez pas aussi bien

  • Utiliser davantage de ressources du serveur

  • Augmente la charge sur tempdb

  • Peut causer des fuites s’il n’est pas utilisé correctement (par exemple, Ouvrir sans fermer correspondant)

Autres conseils

Je suis ce conseil:

  

[...] ce qui est mieux: les curseurs ou   Pendant que les boucles? Encore une fois, cela dépend vraiment   sur votre situation. J'utilise presque toujours   un curseur pour parcourir les enregistrements lorsque   nécessaire. Le format du curseur est un   un peu plus intuitif pour moi et,   puisque je viens d'utiliser les constructions pour   parcourir le jeu de résultats une fois, il   est logique d'utiliser le FAST_FORWARD   le curseur. Rappelez-vous que le type de   le curseur que vous utilisez aura un impact énorme   sur la performance de votre boucle   construire.

& # 8212; Tim Chapman dans Comparaison des performances du curseur et de la boucle WHILE dans SQL Server 2008

L'article lié contient des exemples simples sur la manière de mettre en œuvre chaque approche.

Je vous demanderais ce que vous faites avec cette boucle de curseur / While.

Si vous mettez à jour ou renvoyez des données, pourquoi ne pas utiliser une clause WHERE appropriée. Je connais des gens qui diraient que vous ne devriez jamais utiliser de curseurs.

ici

Ensuite, il existe également this (En réalité, un problème très intéressant appelé - "problème d'Halloween")

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top