![]() |
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 |
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? |
Re: Cursor o T-Sql Gracias! Probare con tablas temporales. Saludos! |
Re: Cursor o T-Sql Hola finalmente lo resolvi utilizando un tabla temporal. Tardo en traerme 100.000 registros 26 segundos. Gracias por todo! |
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. |
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... |
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!! |
Respuesta: Cursor o T-Sql Si, olvide mencionar los indices. Creo que tu experiencia podria ayudar a otros. Si no te molesta cuentanos. |
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.