optimizacion

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

Responses

Browse pgsql-es-ayuda by date

  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