2014-07-25 6:30 GMT-03:00 Flavio Henrique Araque Gurgel <fha...@gmail.com>:

> Por outro lado, dentro de um execute, o search_path da sessão não é
> utilizado.
>
>

Opa. Até onde sei o search_path é respeitado dentro de um EXECUTE sim. A
não ser que seja um comportamento que tenha sido alterado nas versões mais
recentes.


 Só se usa execute quando você precisa de SQL dinâmico, ou seja, a consulta
> e nomes de tabelas e colunas são variáveis.
>

Eu vejo mais um uso para atingir melhor performance, algumas vezes não
queremos um plano genérico, e é melhor colocar uma consulta num EXECUTE do
que executar diretamente (evitando o plano de execução sem os valores
reais, a.k.a, plano genérico). Isso é comum quando a tabela envolvida está
particionada (basicamente um plano genérico vai ter que unir todas tabelas
filhas, mesmo que a consulta use a chave do particionamento). Entretanto, a
partir da versão 9.2 os planos preparados ficaram melhores (basicamente é
feito um re-planejamento no momento da execução em "determinadas
situações") e não é mais comum necessitar de recorrer ao EXECUTE para tanto
(apesar de que já ouvi casos onde ainda é necessário, já que as
"determinadas situações" são difíceis de prever).

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Reply via email to