¿Es recomendable usar cursores de datos?

Publicado el 14 mayo 2014 por Rawepub

Los gestores de bases de datos más populares del mercado permiten el manejo de un tipo de estructura de datos que se denomina cursor
Para entenderlo de forma simple, podríamos definir un cursor como una tabla temporal pero que se carga en memoria, no almacenada en disco.
Si bien puede resultar práctico utilizar un cursor para desplegar datos en una grilla o reporte, existen varias razones por las cuales no se recomienda esta práctica en Sistemas Transaccionales, entre ellas tenemos:

1. Solo pueden recorrerse de manera secuencial, para lo cual se requiere una variable del tipo del registro del cursor. Este suele servir como iterador para leer los datos del registro sobre el cual se encuentra la posición durante el recorrido del cursor. Este tipo de recorridos con grandes cantidades de datos consume mucho recurso y tiempo.

2. No son indexables, de manera que no se puede localizar un registro específico a través de una búsqueda por claves primaria o secundaria, sino únicamente barriendo toda la estructura.

3. No permite relaciones con otros cursores, vistas o tablas.

4. En aplicaciones web (cliente-servidor) su uso relentiza la carga de las páginas.

5. A mayor cantidad de datos retraídos en el cursor, mayor es el consumo de memoria y mayor la complejidad de administrarlo.

El uso de Cursores, una práctica no recomendada

Las alternativas al manejo de cursores que se recomienda son:

1. Tablas temporales. (Estandard)

2. Vistas. (Estandard)

3. Datasets. (Solo en Microsoft .Net)

4. Recordsets. (Solo en Microsoft .Net)

Es importante que se tome en cuenta que para el manejo de bases de datos relacionales en aplicaciones y sistemas transaccionales de gran envergadura, parte de las tareas que se le recomiendan a un administrador de base de datos es que durante el “tunneo”, afinación o puesta a punto de la base de datos retire todo uso de cursores utilizados dentro de los procedimientos almacenados o funciones.