Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Quelle syntaxe de jointure est la meilleure ?

Eh bien, "mieux" est subjectif. Il y a du style ici. Mais je répondrai directement à vos questions.

  1. Les deux fonctionnent de la même manière
  2. Les deux sont conformes à la norme ANSI.
  3. Le problème avec le premier exemple est que

    • il est très facile de dériver par inadvertance le produit croisé (puisqu'il est plus facile d'omettre les critères de jointure)

    • il devient également difficile de déboguer les critères de jointure à mesure que vous ajoutez de plus en plus de tables à la jointure

    • étant donné que la syntaxe de jointure externe à l'ancienne (*=) est obsolète (elle est documentée depuis longtemps pour renvoyer des résultats incorrects), lorsque vous devez introduire des jointures externes, vous devez mélanger les jointures de style nouveau et ancien ... pourquoi promouvoir incohérence ?

    • bien que ce ne soit pas exactement l'autorité sur les meilleures pratiques, Microsoft recommande une syntaxe INNER/OUTER JOIN explicite

    • avec cette dernière méthode :

      • vous utilisez une syntaxe de jointure cohérente indépendamment de l'interne/externe
      • il est plus difficile (pas impossible) de dériver accidentellement le produit croisé
      • isoler les critères de jointure des critères de filtrage peut faciliter le débogage

J'ai écrit le post indiqué par Kevin.