Tenho uma função com uma consulta bastante pesada e preciso fazer cálculos em cima do resultado dela. Pensei que colocando como stable e reutilizando ela no código eu fosse calcula-la apenas uma vez. Mas a performance estava proporcional ao número de vezes que chamava a função.
Coloquei também um RAISE NOTICE na função e as mensagens aparecem várias vezes na saída, confirmando que a função está sendo executada diversas vezes. Um forma de contornar isso é com uma solução longe de ser a ideal. Utilizar OFFSET 0 nas subconsultas que utilizam a função, desta forma, o otimizador de consulta "materializa" o resultado, e utiliza posteriormente toda vez que chamamos a função. Em 25 de outubro de 2011 10:11, Marcone <[email protected]> escreveu: > Em 25 de outubro de 2011 08:36, Pedro Ivo Bispo França > <[email protected]> escreveu: > > > > Pessoal, tenho algumas funções declaradas como STABLE, que estão sendo > executadas várias vezes no statement e segundo a documentação, isso não > deveria acontecer... > > > ....... > > As funções nestes exemplos serão executadas duas vezes, quando > "deveriam" ser executadas apenas uma vez e o resultado ser aproveitado nas > demais chamadas da função. > > > Como você está verificando isso?? > > > -- > Marcone Peres - DBA > http://www.linkedin.com/in/marconeperes > (61) 8146-0028 > _______________________________________________ > pgbr-geral mailing list > [email protected] > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > -- Pedro Ivo Bispo de França X-Brain - Desenvolvimento de Sistemas Ltda Contato: +55 43 3304-2204 | +55 43 9608-3678 Avenida Tiradentes, 501 Sala 702 Torre 1 - Jd. Shangrilá Londrina - Paraná - 86070-545
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
