Boa tarde,
meu problema é o seguinte, depois de compilar uma view toda identada e
organizada certinha, o postgre desorganiza todo o fonte, coloca um monte de
cast desnecessário e a performance diminui.
Trabalho atualmente com o PG 9.1 e já sofri algumas vezes por conta disso,
tive uma situação certa vez em que o postgre colocou um cast numa
comparação que fez um SQL de poucos segundos demorar mais de 10 minutos
(Isso porque cancelei a execução e não esperei até final), novamente hoje
me deparei com o mesmo problema.
Exemplo simples do que acontece com o fonte da view quando mando compilar o
trecho abaixo (Não é a situação real que acontece a lentidão, pois o sql da
mesma era gigante, mas a lógica é a mesma):
*create or replace* view cadastro.vw_cidade_teste
*AS *
*select*
c.cd_cidade,
c.nm_cidade,
c.cd_uf,
u.nm_uf
*from* cadastro.tb_cidade c
*join* cadastro.tb_uf u
*on* c.cd_uf = u.cd_uf
*where* c.cd_cidade *in* (
*select* b.cd_cidade
*from* cadastro.tb_base b
);
Esse fonte depois de compilar fica desorganizado e com um monte de cast que
em algumas situações deixam lento, como exibido abaixo:
*CREATE OR REPLACE VIEW* cadastro.vw_cidade_teste AS
*SELECT *c.cd_cidade, c.nm_cidade, c.cd_uf, u.nm_uf
*FROM *cadastro.tb_cidade c
*JOIN *cadastro.tb_uf u *ON *c.cd_uf*::bpchar* = u.cd_uf*::bpchar*
*WHERE *(c.cd_cidade*::integer* *IN *( *SELECT *b.cd_cidade
*FROM *cadastro.tb_base b));
Gostaria de saber se há como desativar esta reorganização de fontes feita
automaticamente pelo postgre?
Tanto pelo motivo de ficar lento as vezes quanto pela dificuldade em dar
manutenção em view's mais complexas que existem no sistema.
Obrigado.
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral