Hola a todos:
Tengo problemas con el tiempo de ejecucion de un procedimiento almacenado que me devuelve cantidades mensuales, el cual tarda 45 min en dar el resultado completo, lo curioso es que tengo otro casi igual que me devuelve costos mensuales y tarda 12 min. La funcion al final me devuelve 1189 filas y 84 columnas. Las tablas que utilizo son: manoobra_obra de 9716 filas, mat_vales de 15595 filas, obras de 1189 filas y materialesobra de 21442 filas.
Aqui expondre de manera general lo que hace mi funcion (que devuelve cantidades y tarda mucho :cry: ), si alguien necesita los procedimiento completos con gusto los mando.
*** BD: Informix
ACEPTO TODO TIPO DE PROPUESTAS, COMENTARIOS, SUGERENCIAS Y DEMAS; No importa si cambio la logia siempre y cuando el resultado sea el mismo, lo importante para mi es lograr que con obtenga el mismo resultado tal vez aunque no sea con el procedimiento almacenado pero si en menor tiempo de respuesta.
SALUDOS
foreach
select no, nombre, division, anio_obra, zona
into v_noobra, v_obra, v_div, v_anio, v_nomzona
from obras ORDER BY nombre ASC
select sum(cant) into v_matpene from materialesobra
where fechavencimiento like p_anio||'/01/__' and noobra=v_noobra;
select sum(cantidad) into v_matrene from mat_vales
where fechasalidaalmacen like p_anio||'/01/__' and numobrascod=v_noobra;
...
select sum(cant) into v_matpdic from materialesobra
where fechavencimiento like p_anio||'/12/__' and noobra=v_noobra;
select sum(cantidad) into v_matrdic from mat_vales
where fechasalidaalmacen like p_anio||'/12/__' and numobrascod=v_noobra;
select sum(programado) into v_manopene from manoobra_obra
where fechavencimiento like p_anio||'/01/__' and noobra=v_noobra;
...
select sum(programado) into v_manopdic from manoobra_obra
where fechavencimiento like p_anio||'/12/__' and noobra=v_noobra;
select sum(real) into v_manorene from manoobra_obra
where fechavencimiento like p_anio||'/01/__' and noobra=v_noobra;
....
select sum(real) into v_manordic from manoobra_obra
where fechavencimiento like p_anio||'/12/__' and noobra=v_noobra;
let v_totpene=v_matpene+v_manopene; let v_totrene=v_matrene+v_manorene;
...
return v_nomzona, v_obra, v_anio, v_mat, v_mo, v_tot, v_matp, v_matr, v_mop, v_mor, v_totp, v_totr,
v_matpene, v_matrene, ...
... v_manopdic, v_manordic, v_totpene, v_totrene, ... with resume;
end foreach;
ADJUNTO REPORTE EL CUAL SE ALIMENTA DE ESTE RESULTADO (Un DataTable/Tabla)



