Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Cursor o T-Sql

Estas en el tema de Cursor o T-Sql en el foro de SQL Server en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 13/05/2008, 02:59
 
Fecha de Ingreso: febrero-2008
Mensajes: 28
Antigüedad: 16 años, 2 meses
Puntos: 1
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

Última edición por Beatrice; 13/05/2008 a las 03:17
  #2 (permalink)  
Antiguo 13/05/2008, 08:24
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
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?
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 14/05/2008, 00:29
 
Fecha de Ingreso: febrero-2008
Mensajes: 28
Antigüedad: 16 años, 2 meses
Puntos: 1
Re: Cursor o T-Sql

Gracias!
Probare con tablas temporales.

Saludos!
  #4 (permalink)  
Antiguo 14/05/2008, 10:56
 
Fecha de Ingreso: febrero-2008
Mensajes: 28
Antigüedad: 16 años, 2 meses
Puntos: 1
Re: Cursor o T-Sql

Hola finalmente lo resolvi utilizando un tabla temporal.
Tardo en traerme 100.000 registros 26 segundos.

Gracias por todo!
  #5 (permalink)  
Antiguo 14/05/2008, 13:29
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
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.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #6 (permalink)  
Antiguo 14/05/2008, 16:42
Avatar de usuariobaneado  
Fecha de Ingreso: diciembre-2007
Mensajes: 402
Antigüedad: 16 años, 4 meses
Puntos: 5
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...
__________________
Yo quiero ser el pelucón del barrio
  #7 (permalink)  
Antiguo 16/05/2008, 01:44
 
Fecha de Ingreso: febrero-2008
Mensajes: 28
Antigüedad: 16 años, 2 meses
Puntos: 1
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!!
  #8 (permalink)  
Antiguo 16/05/2008, 08:06
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Cursor o T-Sql

Si, olvide mencionar los indices. Creo que tu experiencia podria ayudar a otros.
Si no te molesta cuentanos.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #9 (permalink)  
Antiguo 16/05/2008, 11:36
Avatar de usuariobaneado  
Fecha de Ingreso: diciembre-2007
Mensajes: 402
Antigüedad: 16 años, 4 meses
Puntos: 5
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
__________________
Yo quiero ser el pelucón del barrio
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 12:37.