From: | "Esneiker Enriquez Cabrera" <eenriquez(at)cav(dot)desoft(dot)cu> |
---|---|
To: | "'POSTGRES'" <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | optimizacion |
Date: | 2015-06-08 12:20:02 |
Message-ID: | 000101d0a1e5$7b1faac0$715f0040$@desoft.cu |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Saludos a todos los amigos de la comunidad.
Les escribo porque tengo un problema y no logro encontrar una buena forma de
resolverlo. Tengo una función para obtener reportes estadísticos donde debo
retornar el nombre de las unidades organizativas, los nombres de los tipos
de servicios y los totales, de la siguiente forma:
Unidad
Tipo de servicio
T1
T2
T3
T4
El problema es que entre la tabla de unidades organizativas y tipos de
servicio no hay relación directa, sino a través de otras tablas del negocio.
Necesito tirar todas las unidades contra todos los tipos de servicio.
La solución que he dado hasta el momento es con un ciclo for recorrer la
tabla tipo de servicio e ir calculando los totales e irlos insertando en una
tabla temporal para al final devolver los valores, donde evidentemente esto
provoca problemas de rendimiento, el código es el siguiente(cortado para no
abrumar):
for aid_elemento,adescripcion from vw_nmtipo_servicio order by tipo_servicio
loop
SQLText = 'INSERT INTO estadistico SELECT id, nombre,
(SELECT COUNT(distinct
vw_registro_expediente_incidencia.id) FROM vw_registro_expediente_incidencia
WHERE ...) AS t1,
(SELECT COUNT(distinct
vw_registro_expediente_incidencia.id) FROM vw_registro_expediente_incidencia
...) AS t2,
(SELECT COUNT(distinct
vw_registro_expediente_incidencia.id) FROM vw_registro_expediente_incidencia
...) AS t3,
(SELECT COUNT(distinct
vw_registro_expediente_incidencia.id) FROM vw_registro_expediente_incidencia
...) AS t4
'''||adescripcion_elemento||'''::character varying as criterio1 FROM
nmunidad_org WHERE (nmunidad_org.id IN ('||alista_id_nivel||'))';
execute SQLText;
SQLText = '';
end loop;
Espero que me puedan dar alguna recomendación para optimizar el diseño.
Saludos,
M.Sc. Esneiker Enriquez Cabrera
Esp. B en Ciencias Informáticas
Desoft en Ciego de Ávila. Joaquín de Aguero esq. Calle 2. Ciego de Ávila.
Cuba.
Telf.: 53 33 22 8971, email.: <mailto:eenriquez(at)cav(dot)desoft(dot)cu>
eenriquez(at)cav(dot)desoft(dot)cu
From | Date | Subject | |
---|---|---|---|
Next Message | Esneiker Enriquez Cabrera | 2015-06-08 12:32:40 | RE: optimizacion |
Previous Message | Esneiker Enriquez Cabrera | 2015-06-08 11:34:48 | RE: [pgsql-es-ayuda] sobre índices en la base de datos |