Muito boa explicação, obrigado!

Em 19/05/2010 19:55, Mozart Hasse escreveu:
> Benedito,
>
>    
>>    Não sei se minha pergunta é boba, mas:
>>     Porque fazer desse jeito é mais eficiente do que fazer um LEFT JOIN?
>>      
> A pergunta não é boba não, na realidade a explicação não é nada trivial.
> A resposta mais simples e curta que posso dar é: esse jeito (UNION ALL +
> INNER + NOT EXISTS) é mais eficiente porque o otimizador não tem
> inteligência suficiente para notar que são equivalentes.
> Em alguns casos simples, alguns bancos de dados fazem a conversão
> automaticamente e procuram por um plano otimizado. Em casos mais
> complicados, nem todo otimizador consegue.
>
> Talvez para você ainda reste a pergunta "tá mas por quê fazer 4 unions é
> mais rápido que um OUTER?". Neste caso a resposta também não é trivial:
> É que ao dividir a consulta em 4 menores, o servidor pode usar um índice
> diferente (muitas vezes de uma das tabelas filhas) para cada uma das
> subconsultas ao invés de percorrer a tabela principal sequencialmente. É
> exatamente essa habilidade de escolher índices pelo volume da tabela filha
> que pode tornar a consulta infinitamente mais rápida.
>
> Atenciosamente,
>
> Mozart Hasse
>
>
> _______________________________________________
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>    



-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.

_______________________________________________
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