Re: optimizacion

From: Anthony Sotolongo León <asotolongo(at)gmail(dot)com>
To: Esneiker Enriquez Cabrera <eenriquez(at)cav(dot)desoft(dot)cu>, 'POSTGRES' <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: optimizacion
Date: 2015-06-08 13:03:18
Message-ID: 55759296.1050209@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola Esneiker, trata de utilizar clausula "WITH", te puede ayudar mucho
a optimizar mejor ese tipo de consultas donde tienes subconsultas en en
el SELECT.
http://www.postgresql.org/docs/9.4/interactive/queries-with.html
Saludos

El 08-06-2015 a las 9:20, Esneiker Enriquez Cabrera escribió:
>
> 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 Agueroesq. Calle 2. Ciego de
> Ávila. Cuba.
> *Telf.:* 53 33 22 8971, *email.:* eenriquez(at)cav(dot)desoft(dot)cu
> <mailto: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

In response to

  • optimizacion at 2015-06-08 12:20:02 from Esneiker Enriquez Cabrera

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Gilberto Castillo 2015-06-08 13:29:46 Re: optimizacion
Previous Message Carlos Enrique Perez (Syswarp) 2015-06-08 12:37:50 Re: optimizacion