Cursor versus bucle while: ¿cuáles son las ventajas / desventajas de los cursores?

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

  •  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?

¿Fue útil?

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.

Algunas desventajas de los cursores son here

Luego también está this (En realidad, un problema muy interesante llamado - " problema de Halloween ")

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top