OPTIMIZAR PROCEDIMIENTO ALMACENADO

Select Lenguaje Query, aqui podras encontrás Consultas coomo Select, Insert, Update...., y mucho mas...

OPTIMIZAR PROCEDIMIENTO ALMACENADO

Notapor pelacuaz » Jue Abr 02, 2009 9:12 am

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)
Adjuntos
tabla_mini.JPG
Este es el reporte q alimento con la funcion SPL
tabla_mini.JPG (93.68 KiB) Visto 2177 veces
pelacuaz
Novato
Novato
 
Mensajes: 2
Registrado: Jue Abr 02, 2009 8:29 am

Re: OPTIMIZAR PROCEDIMIENTO ALMACENADO

Notapor Ftanori » Lun Abr 06, 2009 9:58 am

Quizas sea un problema de indices, revisa tus indices, y crea unos donde sea necesario


Saludos
Imagen

Imagen

" ExIsTo y A vEcEs PiEnSo "
Ftanori
Novato
Novato
 
Mensajes: 6
Registrado: Vie Ene 30, 2009 2:11 pm

Re: OPTIMIZAR PROCEDIMIENTO ALMACENADO

Notapor pelacuaz » Lun Abr 06, 2009 11:58 am

Hola:

Gracias por interesarte en mi problematica, de antemano te agradezco.

Pues mira estos son mis tablas y sus indices:
mat_vales: mvare, mvbod, tipo_movimiento, anio, numero, codigo
Manoobra_obra: noobra, nomanoobra
materialesobra: i
obras: no

la columna: no de la tabla obras es el unico indice q uso.

nose mucho de indices, pero como suguieres que haga uso de ellos para optimizar mi consulta. Espero y puedas explicarme donde crear esos indices o indices de que columnas y como usarlos en mi query.

SALUDOS
pelacuaz
Novato
Novato
 
Mensajes: 2
Registrado: Jue Abr 02, 2009 8:29 am

Re: OPTIMIZAR PROCEDIMIENTO ALMACENADO

Notapor Tnolock » Jue Jun 11, 2009 8:49 am

si te sirve aun... pudes mostrar los procedimientos almacenados.


con gusto te ayudo
Tnolock
Novato
Novato
 
Mensajes: 1
Registrado: Jue Jun 11, 2009 8:45 am


Volver a Lenguage SQL

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados

cron