Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Relacionar tabelas com o Join.

Caso eu tenha 3 tabelas. Por qual tabela eu inicio o join, como eu saberei?

3 respostas

A ordem do join não importa, já que o SGBD tem um otimizador que se encarrega disso. Eu tenho o costume de usar o WHERE quando uso mais de duas tabelas. Funciona bem para casos de inner join Exemplo:

...
WHERE 
    tba_id1 = tbb_id2 AND
    tba_id1 = tbc_id3
...
solução!

Oi Rafael, tudo bom?

Veja bem, quando você estiver pensando em uma Junção de tabelas, com certeza pensará também nos conteúdos que aplicará nos filtros. Este é o ponto chave, a partir do momento em que um filtro é realizado numa tabela maior, mais memória é consumida, desta forma o processo fica mais lento. Já se o filtro for aplicado da menor tabela para a maior, será consumido menos memória.

Porém, como o Leandro mencionou, não precisa se preocupar com a ordem, pois a inteligência do SGBD vai ordernar da forma como melhor lhe convir.

Para casos de testes, você pode realizar duas consultas, uma partindo da maior para a menor e outra ao contrário, após isso, veja o tempo de execução de cada uma separadamente.

Obrigado Leandro Meili e Mateus Roman.