Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Qual sintaxe de junção é melhor?


Bem, "melhor" é subjetivo. Há algum estilo aqui. Mas vou responder suas perguntas diretamente.
  1. Ambos têm o mesmo desempenho
  2. Ambos são compatíveis com ANSI.

  3. 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.