Bem, "melhor" é subjetivo. Há algum estilo aqui. Mas vou responder suas perguntas diretamente.
- Ambos têm o mesmo desempenho
- Ambos são compatíveis com ANSI.
-
O problema com o primeiro exemplo é que
-
é muito fácil derivar inadvertidamente o produto cruzado (já que é mais fácil deixar de fora os critérios de junção)
-
também se torna difícil depurar os critérios de junção à medida que você adiciona mais e mais tabelas à junção
-
como a sintaxe de junção externa (*=) de estilo antigo foi preterida (há muito tempo está documentada para retornar resultados incorretos), quando você precisa introduzir junções externas, você precisa misturar junções de estilo novo e estilo antigo ... por que promover inconsistência?
-
embora não seja exatamente a autoridade em práticas recomendadas, a Microsoft recomenda a sintaxe INNER/OUTER JOIN explícita
-
com o último método:
- você está usando uma sintaxe de junção consistente, independentemente do interno/externo
- é mais difícil (não impossível) derivar acidentalmente o produto cruzado
- isolar os critérios de junção dos critérios de filtro pode facilitar a depuração
-
Eu escrevi o post que Kevin apontou.