utilizar cursores en SP o utilixar DataReader

22/12/2005 - 15:25 por andy O | Informe spam
Hola a todos

Quisiera saber¿ qué es más óptimo?, utilizar cursores dentro de un store
procedure para recorrer los registros y luego realizar operaciones como
delete, update o insert a otras tablas, o utilizar un datareader o un dataset
para poder recorrelo y hacer las operaciones ya mencionadas.

Espero que me ayuden.
Gracias.
 

Leer las respuestas

#1 Tristan
23/12/2005 - 17:53 | Informe spam
Bueno, en realidad utilizar cursores es casi siempre la opción menos
eficiente que existe. Precisamente por eso se han eliminado de ado.net. Un
cursor obliga al SGBD a mantener una buena cantidad de recursos. Si son
muchos los usuarios conectados simultaneamente, los cursores degradan el
rendimiento de forma exponencial. Los cursores son eficientes con cargas
pequeñas de trabajo pero nunca se deben utilizar si la carga es grande.

Ahora bien si se necesita avance y retroceso (por ej. paginación) utilizar
cursores puede ser la forma más eficiente, tal vez también cuando se
necesite actualizar tras la consulta, pero son pocos los casos en los que
sería conveniente. Normalmente la forma más eficiente de obtener datos es a
través del cursor FireHose también llamado "no cursor", es decir el sistema
utilizado por DataReader o el Fill del DataAdapter, en el cursor de solo
avance y solo lectura el SGBD devuelve datos a medida que dispone de ellos
con lo que prácticamente no desperdicia recursos en el mantenimiento.

Juan Carlos Badiola
MVP - C#

Preguntas similares