Caso eu tenha 3 tabelas. Por qual tabela eu inicio o join, como eu saberei?
Caso eu tenha 3 tabelas. Por qual tabela eu inicio o join, como eu saberei?
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
...
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.