Ola Turma.

Estou tentando gerar uma consulta de soma em um intervalo de 30 dias, são 
vários registros para calcular, podem esta demorando em torno de 15 minutos, 
creio eu que não poderia demorar tanto assim, pois são em torno de 4 mil 
registros dentro da tabela saida2.

SELECT
 (
SELECT
    sum(saida2.quantidade) 
FROM
     public.saida1 saida1 INNER JOIN public.saida2 saida2 ON saida1.id_saida1 = 
saida2.id_saida1
     INNER JOIN public.unidade unidade ON saida1.id_unidade = unidade.id_unidade
     INNER JOIN public.lote lote ON saida2.id_lote = lote.id_lote
WHERE
     saida1.data >=$P{dataInicial}
and      saida1.data <=$P{dataFinal} 
 AND unidade.id_municipio = $P{idMunicipio} and 
lote.id_principio_ativo=principio_ativo.id_principio_ativo) as saida,

(SELECT
     sum(entrada2.quant_entrada) 
FROM
     public.entrada1 entrada1 INNER JOIN public.entrada2 entrada2 ON 
entrada1.id_entrada1 = entrada2.id_entrada1
     INNER JOIN public.unidade unidade ON entrada1.id_unidade = 
unidade.id_unidade
     INNER JOIN public.lote lote ON entrada2.id_lote = lote.id_lote
WHERE
    entrada1.data_entrada >=$P{dataInicial}
and     entrada1.data_entrada <=$P{dataFinal} and unidade.id_municipio = 
$P{idMunicipio} 
and lote.id_principio_ativo=principio_ativo.id_principio_ativo) as entrada 

FROM
     public.principio_ativo principio_ativo inner join grupo_farmacologico on 
 
principio_ativo.id_grupo_farmacologico=grupo_farmacologico.id_grupo_farmacologico
 inner join 
municipio on municipio.id_municipio=grupo_farmacologico.id_municipio
where grupo_farmacologico.id_municipio=$P{idMunicipio} 

Existe índice para as datas e as chaves fk.

Alguem tem alguma sugestão para melhorar a performace?


Abraços.

Leandro Müller

_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a