sql >> Base de Datos >  >> RDS >> Sqlserver

¿Por qué se considera una mala práctica usar cursores en SQL Server?

Porque los cursores ocupan memoria y crean bloqueos.

Lo que realmente está haciendo es intentar forzar la tecnología basada en conjuntos en una funcionalidad no basada en conjuntos. Y, con toda justicia, debo señalar que los cursores do tienen un uso, pero están mal vistos porque muchas personas que no están acostumbradas a usar soluciones basadas en conjuntos usan cursores en lugar de descubrir la solución basada en conjuntos.

Pero, cuando abre un cursor, básicamente está cargando esas filas en la memoria y bloqueándolas, creando bloques potenciales. Luego, a medida que recorre el cursor, realiza cambios en otras tablas y aún mantiene abiertos todos los bloqueos y la memoria del cursor.

Todo lo cual tiene el potencial de causar problemas de rendimiento para otros usuarios.

Entonces, como regla general, los cursores están mal vistos. Especialmente si esa es la primera solución a la que se llega para resolver un problema.