consultas lentas
Publicado por Gabriela (25 intervenciones) el 15/04/2009 17:36:27
Hola a todos, tengo un gran problema. En mi sistema el origen de datos de mis reportes o presentacion de informacion en pantallas,en el 90 y tanto por ciento de los casos uso vista parametrizadas o select sql into cursor. Al pricipio esto andaba bien, pero ahora tengo tablas con mas de 600.000 registros y a veces tengo que hacer mas de una consulta el el mismo informe y se han hecho demasiado lentas.
Probé usando seek, found(), do while, etc y el tiempo se acorta muchisimo, pero para esto debería hacer un cambio enorme y crear un montón de indices. Mando un ejemplo de una consulta a ver si hay alguna forma de optimizarla y así evitar todo ese cambio.
*hago consulta de entradas - salidas del dia que estoy consultando
SELECT mov_stock.fecha_mov, mov_stock.id_proveed, mov_stock.cod_art,;
SUM(mov_stock.entrada_u - mov_stock.salida_u) AS EXISTE,;
SUM(mov_stock.entrada_k-mov_stock.salida_k) AS EXISTE
_k;
FROM gestion!mov_stock ;
LEFT OUTER JOIN gestion!comprob ON mov_stock.cod_cpte = comprob.cod_cpte ;
WHERE Comprob.mov_stock = 1 ;
AND Comprob.afecta_ex = 1;
and mov_stock.id_proveed =mprovee;
AND mov_stock.fecha_mov =mFdesde ;
group by mov_stock.cod_art INTO CURSOR cierre
Probé usando seek, found(), do while, etc y el tiempo se acorta muchisimo, pero para esto debería hacer un cambio enorme y crear un montón de indices. Mando un ejemplo de una consulta a ver si hay alguna forma de optimizarla y así evitar todo ese cambio.
*hago consulta de entradas - salidas del dia que estoy consultando
SELECT mov_stock.fecha_mov, mov_stock.id_proveed, mov_stock.cod_art,;
SUM(mov_stock.entrada_u - mov_stock.salida_u) AS EXISTE,;
SUM(mov_stock.entrada_k-mov_stock.salida_k) AS EXISTE
_k;
FROM gestion!mov_stock ;
LEFT OUTER JOIN gestion!comprob ON mov_stock.cod_cpte = comprob.cod_cpte ;
WHERE Comprob.mov_stock = 1 ;
AND Comprob.afecta_ex = 1;
and mov_stock.id_proveed =mprovee;
AND mov_stock.fecha_mov =mFdesde ;
group by mov_stock.cod_art INTO CURSOR cierre
Valora esta pregunta


0