Cursor versus bucle while: ¿cuáles son las ventajas / desventajas de los cursores?
-
02-07-2019 - |
Pregunta
¿Es una buena idea usar while loop en lugar de un cursor? ¿Cuáles son las ventajas / desventajas de los cursores?
Solución
Algunos de estos dependen del DBMS, pero en general:
Pros:
-
Supera los bucles cuando se trata del procesamiento fila por fila
-
Funciona razonablemente bien con grandes conjuntos de datos
Contras:
-
No escalar también
-
Usa más recursos del servidor
-
Aumenta la carga en tempdb
-
Puede causar fugas si se usa incorrectamente (por ejemplo, Abrir sin el correspondiente cierre)
Otros consejos
Estoy siguiendo este consejo:
[...] que es mejor: cursores o MIENTRAS bucles? De nuevo, realmente depende en su situacion Casi siempre uso un cursor para recorrer los registros cuando necesario. El formato del cursor es un un poco más intuitivo para mí y ya que solo uso las construcciones para recorrer el conjunto de resultados una vez, tiene sentido usar el FAST_FORWARD cursor. Recuerda que el tipo de el cursor que uses tendrá un gran impacto sobre el rendimiento de su bucle construir.
& # 8212; Tim Chapman en Comparando el rendimiento del bucle WHILE con el cursor en SQL Server 2008
El artículo vinculado contiene ejemplos simples de cómo implementar cada enfoque.
Te pregunto qué estás haciendo con ese cursor / while loop.
Si está actualizando o devolviendo datos, ¿por qué no utiliza una cláusula WHERE adecuada? Conozco personas que dirían que nunca deberías usar cursores.