desventaja de Curso y Query's

23/06/2004 - 18:47 por Jose Manuel Davila | Informe spam
por que puede ser mas lento un Cursor que Varios Query's

Gracias

saludos

Preguntas similare

Leer las respuestas

#1 Adrian D. Garcia
24/06/2004 - 05:27 | Informe spam
Por varias razones.
El motor esta optimizado para realizar operaciones que involucren a
conjuntos de filas. Por ello una serie de querys es mas rapido que un
cursor.
Cuando creamos un cursor empezamos a aplicar logica de "fila a fila". En ese
caso nos perdemos una serie de optimizaciones que puede hacer el motor en
funcion de las estadisticas generadas que ya tiene sobre los datos, los
indices que existen, la posibilidad de paralelizar operaciones, etc.

Saludos (brigada anti cursor)
Adrian D. Garcia
MCSD
NDSoft Consultoria y Desarrollo

"Jose Manuel Davila" wrote in message
news:
por que puede ser mas lento un Cursor que Varios Query's

Gracias

saludos


Respuesta Responder a este mensaje
#2 Antonio Ortiz
24/06/2004 - 17:31 | Informe spam
Desea agregar que los cursores los usamos programadores con poca experiencia
en el uso y (programacion) de SQL Server, debido a que tenemos mayor control
sobre los cursores del lado del cliente por medio de codigo.

Me explico con un ejemplo:

- En un sistema comercial que desarrollo, al actualizar existencias en una
factura (venta), creo un cursor (ADO) y realizo un ciclo por cada detalle de
la venta, restando la cantidad indicada de las existencias actuales de cada
producto, si existe un error en el proceso valido con una transaccion.
Ademas se actualiza el saldo del cliente y del documento. (Esto implica
trasladar desde el servidor hacia el cliente todos los registros del detalle
de la venta, los productos relacionados, el cliente correspondiente, y el
encabezado de la venta; en un total de 4 tablas diferentes)

- Se que si realizo un 'Stored Procedure' que reciba como parametro el ID de
la venta y actualice las existencias del conjunto de registros del detalle,
validando desde ahi la transaccion y regresando el resultado de la misma
seria mas rapida, sin embargo no tengo los conocimientos suficientes para
hacerlo o me parece mas rapido programarlo del lado del cliente.

Espero se aclare mas el asunto.


cordialmente,


Antonio Ortiz Ramirez
asesor en sistemas

www.aortiz.net
www.progvisual.com



"Adrian D. Garcia" escribió en el mensaje
news:
Por varias razones.
El motor esta optimizado para realizar operaciones que involucren a
conjuntos de filas. Por ello una serie de querys es mas rapido que un
cursor.
Cuando creamos un cursor empezamos a aplicar logica de "fila a fila". En


ese
caso nos perdemos una serie de optimizaciones que puede hacer el motor en
funcion de las estadisticas generadas que ya tiene sobre los datos, los
indices que existen, la posibilidad de paralelizar operaciones, etc.

Saludos (brigada anti cursor)
Adrian D. Garcia
MCSD
NDSoft Consultoria y Desarrollo

"Jose Manuel Davila" wrote in message
news:
> por que puede ser mas lento un Cursor que Varios Query's
>
> Gracias
>
> saludos
>
>


Respuesta Responder a este mensaje
#3 Carlos Sacristan
25/06/2004 - 08:28 | Informe spam
Bueno, pero el hecho de que se desconozca cómo hacerlo bien no implica
que no se busque ese fin. Quiero decir que si gente con experiencia afirma
que los cursores son más lentos que trabajar con un conjunto de datos, el
objetivo es aprender de una forma u otra para conseguir evitarlos, ¿no
crees?


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


"Antonio Ortiz" escribió en el mensaje
news:
Desea agregar que los cursores los usamos programadores con poca


experiencia
en el uso y (programacion) de SQL Server, debido a que tenemos mayor


control
sobre los cursores del lado del cliente por medio de codigo.

Me explico con un ejemplo:

- En un sistema comercial que desarrollo, al actualizar existencias en una
factura (venta), creo un cursor (ADO) y realizo un ciclo por cada detalle


de
la venta, restando la cantidad indicada de las existencias actuales de


cada
producto, si existe un error en el proceso valido con una transaccion.
Ademas se actualiza el saldo del cliente y del documento. (Esto implica
trasladar desde el servidor hacia el cliente todos los registros del


detalle
de la venta, los productos relacionados, el cliente correspondiente, y el
encabezado de la venta; en un total de 4 tablas diferentes)

- Se que si realizo un 'Stored Procedure' que reciba como parametro el ID


de
la venta y actualice las existencias del conjunto de registros del


detalle,
validando desde ahi la transaccion y regresando el resultado de la misma
seria mas rapida, sin embargo no tengo los conocimientos suficientes para
hacerlo o me parece mas rapido programarlo del lado del cliente.

Espero se aclare mas el asunto.


cordialmente,


Antonio Ortiz Ramirez
asesor en sistemas

www.aortiz.net
www.progvisual.com



"Adrian D. Garcia" escribió en el mensaje
news:
> Por varias razones.
> El motor esta optimizado para realizar operaciones que involucren a
> conjuntos de filas. Por ello una serie de querys es mas rapido que un
> cursor.
> Cuando creamos un cursor empezamos a aplicar logica de "fila a fila". En
ese
> caso nos perdemos una serie de optimizaciones que puede hacer el motor


en
> funcion de las estadisticas generadas que ya tiene sobre los datos, los
> indices que existen, la posibilidad de paralelizar operaciones, etc.
>
> Saludos (brigada anti cursor)
> Adrian D. Garcia
> MCSD
> NDSoft Consultoria y Desarrollo
>
> "Jose Manuel Davila" wrote in message
> news:
> > por que puede ser mas lento un Cursor que Varios Query's
> >
> > Gracias
> >
> > saludos
> >
> >
>
>


Respuesta Responder a este mensaje
#4 Antonio Ortiz
25/06/2004 - 16:22 | Informe spam
Asi es, en mi ejemplo el principal obstaculo fue el mayor control de errores
del lado del cliente, por el dominio de la codificiacion, no asi en un
stored procedure.

Saludos,

Antonio Ortiz Ramirez
asesor en sistemas

www.aortiz.net
www.progvisual.com


"Carlos Sacristan" <csacristan ARROBA mvps.org> escribió en el mensaje
news:
Bueno, pero el hecho de que se desconozca cómo hacerlo bien no implica
que no se busque ese fin. Quiero decir que si gente con experiencia afirma
que los cursores son más lentos que trabajar con un conjunto de datos, el
objetivo es aprender de una forma u otra para conseguir evitarlos, ¿no
crees?


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


"Antonio Ortiz" escribió en el mensaje
news:
> Desea agregar que los cursores los usamos programadores con poca
experiencia
> en el uso y (programacion) de SQL Server, debido a que tenemos mayor
control
> sobre los cursores del lado del cliente por medio de codigo.
>
> Me explico con un ejemplo:
>
> - En un sistema comercial que desarrollo, al actualizar existencias en


una
> factura (venta), creo un cursor (ADO) y realizo un ciclo por cada


detalle
de
> la venta, restando la cantidad indicada de las existencias actuales de
cada
> producto, si existe un error en el proceso valido con una transaccion.
> Ademas se actualiza el saldo del cliente y del documento. (Esto implica
> trasladar desde el servidor hacia el cliente todos los registros del
detalle
> de la venta, los productos relacionados, el cliente correspondiente, y


el
> encabezado de la venta; en un total de 4 tablas diferentes)
>
> - Se que si realizo un 'Stored Procedure' que reciba como parametro el


ID
de
> la venta y actualice las existencias del conjunto de registros del
detalle,
> validando desde ahi la transaccion y regresando el resultado de la misma
> seria mas rapida, sin embargo no tengo los conocimientos suficientes


para
> hacerlo o me parece mas rapido programarlo del lado del cliente.
>
> Espero se aclare mas el asunto.
>
>
> cordialmente,
>
>
> Antonio Ortiz Ramirez
> asesor en sistemas
>
> www.aortiz.net
> www.progvisual.com
>
>
>
> "Adrian D. Garcia" escribió en el


mensaje
> news:
> > Por varias razones.
> > El motor esta optimizado para realizar operaciones que involucren a
> > conjuntos de filas. Por ello una serie de querys es mas rapido que un
> > cursor.
> > Cuando creamos un cursor empezamos a aplicar logica de "fila a fila".


En
> ese
> > caso nos perdemos una serie de optimizaciones que puede hacer el motor
en
> > funcion de las estadisticas generadas que ya tiene sobre los datos,


los
> > indices que existen, la posibilidad de paralelizar operaciones, etc.
> >
> > Saludos (brigada anti cursor)
> > Adrian D. Garcia
> > MCSD
> > NDSoft Consultoria y Desarrollo
> >
> > "Jose Manuel Davila" wrote in message
> > news:
> > > por que puede ser mas lento un Cursor que Varios Query's
> > >
> > > Gracias
> > >
> > > saludos
> > >
> > >
> >
> >
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida