Porque lo que hago es que cuento registros del negocio (incidencias) que estén asociados a la unidad y al tipo de servicio correspondientes.
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.: eenriq...@cav.desoft.cu -----Mensaje original----- De: Gilberto Castillo [mailto:gilberto.casti...@etecsa.cu] Enviado el: lunes, 08 de junio de 2015 9:30 Para: Esneiker Enriquez Cabrera CC: 'POSTGRES' Asunto: Re: [pgsql-es-ayuda] optimizacion 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:eenriq...@cav.desoft.cu> > eenriq...@cav.desoft.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 __________ 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 __________ 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@postgresql.org) Para cambiar tu suscripci�n: http://www.postgresql.org/mailpref/pgsql-es-ayuda