Cursores o tablas temporales

15/01/2004 - 09:05 por Rebeka | Informe spam
Hola,

Tengo una duda entre usar cursores o tablas temporales para trabajar con
conjunto de registros pero tratar de forma individual a cada uno de ellos.
Alguien me puede decir cual de las dos opciones es más eficiente, es decir,
consume menos, es más rápido,... Y si hay alguna opción mejor?

Gracias por adelantado.

Un saludo,
Rebeca.

Preguntas similare

Leer las respuestas

#1 Carlos Sacristan
15/01/2004 - 09:52 | Informe spam
Tratar registros de manera individual desde SQL Server, que está pensado
(y optimizado) para manejar conjuntos nunca va a ser tan eficiente. Yo
pensaría la solución desde el punto de vista de la aplicación cliente una
vez que se han procesado los resultados.

La mayoría de las operaciones que se pueden hacer con cursores se pueden
hacer (y mejor) sin ellos, por lo que hay que intentar evitarlos al máximo
(verdad Miguel, presidente de la Brigada Anti-Cursores? ;-) ). ¿Qué es
exactamente lo que necesitas, Rebeka?


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Rebeka" escribió en el mensaje
news:
Hola,

Tengo una duda entre usar cursores o tablas temporales para trabajar con
conjunto de registros pero tratar de forma individual a cada uno de ellos.
Alguien me puede decir cual de las dos opciones es más eficiente, es


decir,
consume menos, es más rápido,... Y si hay alguna opción mejor?

Gracias por adelantado.

Un saludo,
Rebeca.


Respuesta Responder a este mensaje
#2 Miguel Egea
15/01/2004 - 11:04 | Informe spam
Si señor, creando escuela, :-d
"Carlos Sacristan" escribió en el mensaje
news:u$
Tratar registros de manera individual desde SQL Server, que está


pensado
(y optimizado) para manejar conjuntos nunca va a ser tan eficiente. Yo
pensaría la solución desde el punto de vista de la aplicación cliente una
vez que se han procesado los resultados.

La mayoría de las operaciones que se pueden hacer con cursores se


pueden
hacer (y mejor) sin ellos, por lo que hay que intentar evitarlos al máximo
(verdad Miguel, presidente de la Brigada Anti-Cursores? ;-) ). ¿Qué


es
exactamente lo que necesitas, Rebeka?


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Rebeka" escribió en el mensaje
news:
> Hola,
>
> Tengo una duda entre usar cursores o tablas temporales para trabajar con
> conjunto de registros pero tratar de forma individual a cada uno de


ellos.
> Alguien me puede decir cual de las dos opciones es más eficiente, es
decir,
> consume menos, es más rápido,... Y si hay alguna opción mejor?
>
> Gracias por adelantado.
>
> Un saludo,
> Rebeca.
>
>


Respuesta Responder a este mensaje
#3 Maximiliano D. A.
15/01/2004 - 13:46 | Informe spam
Solo como aporte:

La forma de trabajar con cursores no es para la que SqlServer esta pensado,
ahora este mismo incluye Cursores como para poder usar por lo cual queda en
uno si lo hace o no.

Casi todo se puede hacer sin ellos, pero hay cosas en las cuales no (las
menos menos) por lo tanto hay que recurrir a ellos sabiendo la baja
performance que estos tendran.

Ademas de tablas temporales, te recomiendo que veas varibles tipo Table, es
una opcion interesante donde es mucho mas rapido que las anteriores.

Claro si pensas en poner una de miles de registros quizas te consuma mucha
Ram por lo cual hay que ver bien en cada caso que usar.

La idea de usar cursores o esa forma de pensar es muy comun cuando sos
programador y nunca viste SqlServer y pensas que todo se trabaja como los
Recordset, es cuestion de cambiar un poco el modelo mental cosa que no es
nada facil pero si factible e interesante.

Salu2

Maximiliano Damian Accotto


"Rebeka" escribió en el mensaje
news:
Hola,

Tengo una duda entre usar cursores o tablas temporales para trabajar con
conjunto de registros pero tratar de forma individual a cada uno de ellos.
Alguien me puede decir cual de las dos opciones es más eficiente, es


decir,
consume menos, es más rápido,... Y si hay alguna opción mejor?

Gracias por adelantado.

Un saludo,
Rebeca.


Respuesta Responder a este mensaje
#4 Víctor Rafael Bocanegra Arias
15/01/2004 - 14:36 | Informe spam
Concuerdo contigo Max que cuando uno entra al mundo de las bases de datos
comete el error de querer trabajar con registros individuales como antes
normalmente lo hacia y no explota realmente las caracteristicas del motor de
base de datos. Pero no necesariamente uno trabaja con cursores por error
sino porque es la UNICA solucion que se le encuentra a un problema. Para mi
esta errado decir que: "La forma de trabajar con cursores no es para la que
SqlServer esta pensado", se podria decir que: "Nosotros obtenemos una mejor
performance evitando los cursores" que creo que tienen distinto significado.
No solo MSSQL trabaja con cursores muchos otros motores de base de datos
tambien lo hacen, y aveces como muy bien comentas estamos entranpados en
utilizarlos por ser la UNICA solucion como repito.

Salu2

Victor Rafael Bocanegra Arias
Lima, Peru

"Maximiliano D. A." <maxi_accotto[arroba]speedy[.]com[.]ar> escribió en el
mensaje news:
Solo como aporte:

La forma de trabajar con cursores no es para la que SqlServer esta


pensado,
ahora este mismo incluye Cursores como para poder usar por lo cual queda


en
uno si lo hace o no.

Casi todo se puede hacer sin ellos, pero hay cosas en las cuales no (las
menos menos) por lo tanto hay que recurrir a ellos sabiendo la baja
performance que estos tendran.

Ademas de tablas temporales, te recomiendo que veas varibles tipo Table,


es
una opcion interesante donde es mucho mas rapido que las anteriores.

Claro si pensas en poner una de miles de registros quizas te consuma mucha
Ram por lo cual hay que ver bien en cada caso que usar.

La idea de usar cursores o esa forma de pensar es muy comun cuando sos
programador y nunca viste SqlServer y pensas que todo se trabaja como los
Recordset, es cuestion de cambiar un poco el modelo mental cosa que no es
nada facil pero si factible e interesante.

Salu2

Maximiliano Damian Accotto


"Rebeka" escribió en el mensaje
news:
> Hola,
>
> Tengo una duda entre usar cursores o tablas temporales para trabajar con
> conjunto de registros pero tratar de forma individual a cada uno de


ellos.
> Alguien me puede decir cual de las dos opciones es más eficiente, es
decir,
> consume menos, es más rápido,... Y si hay alguna opción mejor?
>
> Gracias por adelantado.
>
> Un saludo,
> Rebeca.
>
>


Respuesta Responder a este mensaje
#5 Maximiliano D. A.
15/01/2004 - 16:45 | Informe spam
Victor:

por mas que muchos motores lo hagan y Sql tambien te comento que no esta
optimizado para hacerlo y que Microsoft mismo aconseja el no uso de estos.

Claro hay cosas que no se pueden resolver de otra manera pero te cuento que
son las minimas.

Yo aca tengo mas de 900 tablas en un sistema ERP con mas de 100 usuarios,
mas muchos sistemas internos montados en SqlServer, "te imaginas los
triggers y Store que hay?" y te comento que en ningun caso tengo cursores,
cuando pense que era la unica solucion me puse a pensar e investigar y casi
siempre (95% de los casos) lo pude hacer sin ellos, por lo cual el
rendimiento es bueno.

Ojo pienso que si estan es por algo y se pueden usar, pero hay que saber
todo lo que eso nos trae como problemas y luego no tratar de decirle a
nuestro Cliente que compre mas memoria o CPU por prestaciones.

Este es un tema largo y tendido, yo particularmente trato no solo de
asegurar un resultado por ejemplo de un Store o Consulta, sino lo que le
cuesta al motor hacer eso, si fuera todo ideal solo me deberia preocupar por
el resultado y nada mas.

Salu2

Maximiliano Damian Accotto


"Víctor Rafael Bocanegra Arias" escribió en
el mensaje news:
Concuerdo contigo Max que cuando uno entra al mundo de las bases de datos
comete el error de querer trabajar con registros individuales como antes
normalmente lo hacia y no explota realmente las caracteristicas del motor


de
base de datos. Pero no necesariamente uno trabaja con cursores por error
sino porque es la UNICA solucion que se le encuentra a un problema. Para


mi
esta errado decir que: "La forma de trabajar con cursores no es para la


que
SqlServer esta pensado", se podria decir que: "Nosotros obtenemos una


mejor
performance evitando los cursores" que creo que tienen distinto


significado.
No solo MSSQL trabaja con cursores muchos otros motores de base de datos
tambien lo hacen, y aveces como muy bien comentas estamos entranpados en
utilizarlos por ser la UNICA solucion como repito.

Salu2

Victor Rafael Bocanegra Arias
Lima, Peru

"Maximiliano D. A." <maxi_accotto[arroba]speedy[.]com[.]ar> escribió en el
mensaje news:
> Solo como aporte:
>
> La forma de trabajar con cursores no es para la que SqlServer esta
pensado,
> ahora este mismo incluye Cursores como para poder usar por lo cual queda
en
> uno si lo hace o no.
>
> Casi todo se puede hacer sin ellos, pero hay cosas en las cuales no (las
> menos menos) por lo tanto hay que recurrir a ellos sabiendo la baja
> performance que estos tendran.
>
> Ademas de tablas temporales, te recomiendo que veas varibles tipo Table,
es
> una opcion interesante donde es mucho mas rapido que las anteriores.
>
> Claro si pensas en poner una de miles de registros quizas te consuma


mucha
> Ram por lo cual hay que ver bien en cada caso que usar.
>
> La idea de usar cursores o esa forma de pensar es muy comun cuando sos
> programador y nunca viste SqlServer y pensas que todo se trabaja como


los
> Recordset, es cuestion de cambiar un poco el modelo mental cosa que no


es
> nada facil pero si factible e interesante.
>
> Salu2
>
> Maximiliano Damian Accotto
>
>
> "Rebeka" escribió en el mensaje
> news:
> > Hola,
> >
> > Tengo una duda entre usar cursores o tablas temporales para trabajar


con
> > conjunto de registros pero tratar de forma individual a cada uno de
ellos.
> > Alguien me puede decir cual de las dos opciones es más eficiente, es
> decir,
> > consume menos, es más rápido,... Y si hay alguna opción mejor?
> >
> > Gracias por adelantado.
> >
> > Un saludo,
> > Rebeca.
> >
> >
>
>


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida