Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Pourquoi est-il considéré comme une mauvaise pratique d'utiliser des curseurs dans SQL Server ?

Parce que les curseurs occupent de la mémoire et créent des verrous.

Ce que vous faites vraiment, c'est essayer de forcer la technologie basée sur les ensembles dans des fonctionnalités non basées sur les ensembles. Et, en toute honnêteté, je dois souligner que les curseurs font ont une utilité, mais ils sont mal vus car de nombreuses personnes qui n'ont pas l'habitude d'utiliser des solutions basées sur des ensembles utilisent des curseurs au lieu de trouver la solution basée sur des ensembles.

Mais, lorsque vous ouvrez un curseur, vous chargez essentiellement ces lignes en mémoire et les verrouillez, créant ainsi des blocs potentiels. Ensuite, lorsque vous parcourez le curseur, vous apportez des modifications à d'autres tables tout en gardant toute la mémoire et les verrous du curseur ouverts.

Tout cela peut entraîner des problèmes de performances pour les autres utilisateurs.

Donc, en règle générale, les curseurs sont mal vus. Surtout si c'est la première solution trouvée pour résoudre un problème.