From: | "Esneiker Enriquez Cabrera" <eenriquez(at)cav(dot)desoft(dot)cu> |
---|---|
To: | "'Gerardo Herzig'" <gherzig(at)fmed(dot)uba(dot)ar> |
Cc: | "'POSTGRES'" <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | RE: optimizacion |
Date: | 2015-06-09 11:52:16 |
Message-ID: | 000301d0a2aa$bb4bee40$31e3cac0$@desoft.cu |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Muchas gracias a todos por sus sugerencias, me han sido de gran utilidad.
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.: eenriquez(at)cav(dot)desoft(dot)cu
-----Mensaje original-----
De: pgsql-es-ayuda-owner(at)postgresql(dot)org [mailto:pgsql-es-ayuda-owner(at)postgresql(dot)org] En nombre de Gerardo Herzig
Enviado el: lunes, 08 de junio de 2015 13:56
Para: Esneiker Enriquez Cabrera
CC: POSTGRES
Asunto: Re: [pgsql-es-ayuda] optimizacion
Asi como se ve....me suena a un
SELECT... from ...GROUP BY unidad, tipo_servicio
junto con un crosstab (para convertir filas en columnas)
http://www.postgresql.org/docs/9.4/static/tablefunc.html
HTH
Gerardo
----- Mensaje original -----
> De: "Esneiker Enriquez Cabrera" <eenriquez(at)cav(dot)desoft(dot)cu>
> Para: "POSTGRES" <pgsql-es-ayuda(at)postgresql(dot)org>
> Enviados: Lunes, 8 de Junio 2015 9:20:02
> Asunto: [pgsql-es-ayuda] optimizacion
>
>
>
>
> 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.: eenriquez(at)cav(dot)desoft(dot)cu
>
>
>
> __________ Información de ESET NOD32 Antivirus, versión de la base de
> firmas de virus 11728 (20150603) __________
>
> ESET NOD32 Antivirus ha comprobado este mensaje.
>
> http://www.eset.com
>
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
Para cambiar tu suscripci�n:
http://www.postgresql.org/mailpref/pgsql-es-ayuda
__________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 3890 (20090226) __________
ESET NOD32 Antivirus ha comprobado este mensaje.
__________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 3890 (20090226) __________
ESET NOD32 Antivirus ha comprobado este mensaje.
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
Para cambiar tu suscripcin:
http://www.postgresql.org/mailpref/pgsql-es-ayuda
From | Date | Subject | |
---|---|---|---|
Next Message | motum hesa | 2015-06-11 15:18:12 | Cambiar |
Previous Message | Guillermo E. Villanueva | 2015-06-08 19:12:19 | Re: BDR |