SQL Server 2008 R2: Jointure croisée avec les performances de la jointure interne Where Vs

Selon ce lien:

Lien MSDN

Il dit que si une jointure croisée a une clause where, elle se comporte comme une jointure interne et renvoie le même résultat qu'une jointure interne.

Je comprends cette partie. Mais ma question est quand j'utilise une requête cross join avec une condition where et une autre requête avec Inner join avec la clause ON, les deux utilisant les mêmes relations et returnnant les mêmes données, y aura-t-il une différence de performance?

La performance sera-t-elle affectée si une troisième / quasortingème table est jointe avec ces deux tables sur INNER ou LEFT OUTER JOIN?

Je ne pouvais pas find une réponse directe sur le Web adressant la même chose pour SQL Server.

  • Girija

  • Girija

Si vous parlez de jointures croisées avec les conditions implicites jointes dans cpmarision aux jointures explicites, elles ont souvent le même plan d'exécution. Cependant, cela pourrait changer à mesure que la requête devient plus complexe (il peut être difficile de prédire comment le moteur choisira d'exécuter des requêtes complexes), mais probablement pas à less que cela ne devienne vraiment compliqué. Vous pouvez toujours vérifier les plans d'exécution pour voir si cela se produit.

En tout état de cause, vous ne devez jamais utiliser de jointures implicites, elles constituent un antipattern sql pour plusieurs raisons, dont la première est qu'elles peuvent facilement créer une jointure accidentelle coûteuse en termes de performances et entraînant souvent des résultats de requête incorrects ou l'exigence append DIstinct qui est aussi cher. De plus, vous ne devez pas mélanger des jointures implicites et des jointures explicites (vous pouvez get de mauvais résultats), si vous devez vous rendre à une jointure à gauche plus tard, vous devrez réécrire toute la requête. Les jointures implicites sont donc plus difficiles à maintenir. Enfin, si vous avez besoin d'une vraie jointure croisée, il ne ressort pas clairement de la synzat implicite si vous vouliez une jointure croisée ou en avoir une accidentelle. Cela peut rendre l'entretien particulièrement difficile.