Em 11/08/2011 15:11, Bruno Silva escreveu:
> Seguinte tenho cerca de 50 funções que podem ser chamadas de modo
> independente. Tipo se o usuário precisar da estatística A , ele chama a
> função estA(date, date).
> Para geração de um determinado relatório que é composto por essas 50
> funções, criei uma façade que chama uma por uma inserindo o resultado em
> uma tabela temporária. E ao término ela imprime o conteúdo dessa tabela
> temporária.
> Seguindo No estilo: select * from
> facade_relatorio('2011-01-01','2011-07-01');
Legal, agora está mais claro.
Vejamos, para o que você quer, dentro da minha limitação de
conhecimento, não tem como fazer. Primeiro, porque tabela temporária é
visível apenas para a transação que a criou, mesmo o pgpool teria
problemas de fazê-lo. Abrir múltiplas conexões cairia no mesmo problema.
Já pensou em utilizar o union?? como os resultados devem ter a mesma
estrutura já que se trata de uma tabela temporária, acho que algo como
abaixo deve resolver.
select ... from ... where ...group by .... (estatística A)
union
select ... from ... where ...group by .... (estatística B)
union
select ... from ... where ...group by .... (estatística C)
Você não precisaria de tabela temporária, enviaria uma única consulta e
teria os mesmos resultados. Acredito que você consiga algum ganho de
performance desta forma, mas não sei se o PostgreSQL iria trabalhar
paralelamente cada query que compõe esta union, acredito sinceramente
que sim. Talvez algum hacker com conhecimento mais profundo sobre como o
PostgreSQL trabalha internamente uma consulta deste tipo possa responder
com mais propriedade.
Abraço,
--
Shander Lyrio
http://about.me/shander
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral