Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   SQL Server (http://www.forosdelweb.com/f87/)
-   -   Cursor o T-Sql (http://www.forosdelweb.com/f87/cursor-t-sql-585807/)

Beatrice 13/05/2008 02:59

Cursor o T-Sql
 
Hola a todos!!

Llevo poco tiempo utilizando procedimientos almacenados y necesito hacer una consulta bastante complicada en la que primero recupero una serie de datos y posteriormente recupero otros datos que dependen de unas fechas recuperadas en los datos que he traido inicialmente.

De momento no he utlizado ni cursores. El esquema de mi primera solucion ha sido este:

SELECT dato1, dato2, ...
FROM
(
SELECT
ROW_NUMBER() OVER (ORDER BY Columna ASC) AS numFila,
dato1, dato2,...
FROM
(
/*Al ejecutarse esta parte ya tengo los datos iniciales con sus fechas con las que obtendré el resto de datos que obtendre en TABLA4*/
SELECT datox,datoy....
FROM
(
SELECT datoxx,...
FROM ..... (AQUI HAY VARIOS JOIN)
WHERE ......
)as Tabla1
FULL OUTER JOIN
(
SELECT datox2,datoy2....
FROM
(
SELECT datoxx,...
FROM ..... (AQUI HAY VARIOS JOIN)
WHERE ......
)as Tabla2
on Tabla1.datox = Tabla2.datox2
) AS TABLA3
- Aqui tambien hay varios join -
WHERE
- criterios de seleccion-
GROUP BY .....
)
AS TABLA4
WHERE numFila BETWEEN @startRowIndex and @maximumRows


¿Creeis que es mas eficiente la consulta de esta manera o sería mas optima utilizando cursores?

El volumen de registros que tengo que taer puede ser bastante alto.

Muchas gracias por opinar!!
:D

flaviovich 13/05/2008 08:24

Re: Cursor o T-Sql
 
Yo no veo problema. Si te funciona lento podrias usar tablas temporales.
Yo tengo una consulta dinamica de mas de 100 lineas y normal, para que usar cursor?

Beatrice 14/05/2008 00:29

Re: Cursor o T-Sql
 
Gracias!
Probare con tablas temporales.

Saludos!

Beatrice 14/05/2008 10:56

Re: Cursor o T-Sql
 
Hola finalmente lo resolvi utilizando un tabla temporal.
Tardo en traerme 100.000 registros 26 segundos.

Gracias por todo!

flaviovich 14/05/2008 13:29

Re: Cursor o T-Sql
 
Y antes cuanto tiempo te tomaba?
Por ejemplo, yo tenia una consulta que demoraba 9 minutos, pero esta demora no se debia a la complejidad de esta, sino a la cantidad de transacciones en la BD. Despues de un cambio de servidor y BD ahora la consulta se realiza en menos de 10 segundos.

usuariobaneado 14/05/2008 16:42

Re: Cursor o T-Sql
 
Tu servidor era una tortuga, o no era un servidor de bd dedicado. O la arquitectura del servidor es diferente, o las conexiones de red son diferentes... en fin...

Beatrice 16/05/2008 01:44

Respuesta: Cursor o T-Sql
 
Hola!
Al final refine todavia mas la consulta creando índices en mis tablas y en la tabla temporal y he conseguido dejarlo en 12 segundos.
De ahi ya no se que mas hacer, pero nos parece un tiempo aceptable (es el tiempo en el peor de los casos)
flaviovich, mejor ni te cuento lo que me tardaba antes (como dije, no suelo trabajar con consultas ;))
Ciao!!

flaviovich 16/05/2008 08:06

Respuesta: Cursor o T-Sql
 
Si, olvide mencionar los indices. Creo que tu experiencia podria ayudar a otros.
Si no te molesta cuentanos.

usuariobaneado 16/05/2008 11:36

Respuesta: Cursor o T-Sql
 
Claro, yo me estoy adentrando en el campo de los indices, pero solo en teoría, aun nada de práctica


La zona horaria es GMT -6. Ahora son las 07:28.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.