[firebase-br] Ordem dos INNER e LEFT - Desempenho.

Carlos Roberto da Silva ralhos em gmail.com
Ter Ago 3 14:15:02 -03 2010


Pela lógica, inner deveria vir primeiro, para sobrar menos registros
para o left join.

Em Ter, 2010-08-03 às 10:14 -0400, Kurt Schneider escreveu:
> Prezados
> 
> Esta semana me deparei com uma situação diferente.
> 
> Estavamos monitorando alguns SQL de um processo bastante complexo no
> sistema, que tem por objetivo montar um Extrato de Movimentações Físicas de
> Produtos.
> Este processo envolve aproximadamente 29 Selects, unidos por Union,
> envolvendo 10 tabelas distintas (nao toda para um select, mas a cada UNION,
> ao menos 3 tabelas).
> 
> Neste Selects a grande maioria é composta por INNER JOIN, mas em dois casos,
> tive que usar INNER e LEFT, nesta ordem, logo após o FROM.
> 
> SELECT
>    ...
> FROM TAB_A
> INNER JOIN ...
> INNER JOIN ...
> LEFT JOIN ...
> LEFT JOIN ...
> 
> WHERE ..
> AND ..
> 
> O Tempo desta consulta esta em 45 Segundos.
> 
> Trocamos a ordem do INNER / LEFT para LEFT /  INNER ficando assim, a
> consulta:
> SELECT
>    ...
> FROM TAB_A
> LEFT JOIN ...
> LEFT JOIN ...
> INNER JOIN ...
> INNER JOIN ...
> WHERE ..
> AND ..
> 
> O Tempo de resposta passou para 3 segundos.
> O Firebird usado é 1.5.4...
> 
> Gostaria de entender esta situação.
> 
> Atenciosamente
> 
> 






Mais detalhes sobre a lista de discussão lista