Re: optimizacion

From: "Gilberto Castillo" <gilberto(dot)castillo(at)etecsa(dot)cu>
To: "Esneiker Enriquez Cabrera" <eenriquez(at)cav(dot)desoft(dot)cu>
Cc: "'POSTGRES'" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: optimizacion
Date: 2015-06-08 13:29:46
Message-ID: 58967.192.168.207.54.1433770186.squirrel@webmail.etecsa.cu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Uhmmm, usar todo esos Count es una locura, pero si es necesario.

¿porque ya que usas un laso no cuenta tu mismo sumando en una variable?

> 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
>
>
>
> ---
> This message was processed by Kaspersky Mail Gateway 5.6.28/RELEASE
> running at host imx2.etecsa.cu
> Visit our web-site: <http://www.kaspersky.com>, <http://www.viruslist.com>
>

Saludos,
Gilberto Castillo
ETECSA, La Habana, Cuba

Attachment Content-Type Size
unknown_filename text/plain 179 bytes
unknown_filename text/plain 157 bytes

In response to

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

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Gerardo Herzig 2015-06-08 17:56:24 Re: optimizacion
Previous Message Anthony Sotolongo León 2015-06-08 13:03:18 Re: optimizacion