Em 05-02-2014 12:10, Euler Taveira escreveu:
On 05-02-2014 11:41, Daniel Cordeiro wrote:
Acredito que esta não seja uma opção tão 'performática', uma vez que a
view vai gerar todos os dados e só depois é que o planejador realizará a
restrição através do cláusula WHERE e ordenações necessárias.
Você está equivocado. Nenhum dado é gerado por ser uma visão. Há uma
etapa antes do planejamento que se chama reescrita. Nesta etapa, as
visões são mescladas com a consulta informada e somente depois a árvore
de consulta é passada para o planejador escolher o plano.
Obrigado pela correção Euler. Na ânsia de explicar uma forma de executar
o que se tinha interesse escrevi sem nem pensar na reescrita feita pelo
planejador antes da execução. Serei mais cuidadoso nas próximas!
Acontece que minha realidade para a consulta que impulsionou a escolha
por uma procedure ao invés de uma visão é bem diferente da exposta no
início deste tópico. Minha consulta possui diversas subqueryes com
definições de parâmetros e cálculos que não puderam ser
solucionados/otimizados com uso de CTEs ou views (e se tornou
impraticável para o momento a reescrita do modelo de negócio do banco).
E não apenas encapsular uma única condição.
Claro, sempre existe uma forma melhor de se fazer, o limite neste
contexto esta no meu 'universo conhecido' ;-P.
O tempo de reescrita não é algo crítico (pelo menos nunca vi relatos).
Além disso, é ingenuidade pensar que a execução de funções não tem custo
inicial. Eu só usaria funções se precisasse de algo procedural (se bem
que dá para fazer várias coisas procedurais com SQL :-).
--
+--------------------------------------------------------------------------+
| Daniel Cordeiro de Morais Neto
| Diretor de TI - Portal de Cotações e-Compras
| Sócio-diretor ADM Soluções em Informática LTDA
| daniel.cordeiro(at)cotacoesecompras.com.br
| dmoraisn(at)gmail.com
| www.cotacoesecompras.com.br
| Fone: (083)8724-4440
| Gentoo User
| http://twitter.com/dmoraisn
+--------------------------------------------------------------------------+
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral