@boteha : ça fait 30 ans que les jointures ne s'écrivent plus dans la restriction WHERE, mais avec l'opérateur JOIN.
et c'est tant mieux, car restriction et jointure sont deux opérations différentes, la restriction s'opère après la jointure, sur le jeu de données résultant de celle-ci
@Séb. : compte tenu de ce qui précède, faire un produit cartésien avec CROSS JOIN puis appliquer une restriction avec WHERE n'est pas la même chose que de faire une jointure interne ou externe avec JOIN.
Certes, l'optimiseur sait souvent optimiser une telle opération en remplaçant dans ce cas le produit cartésien par une jointure pour la rendre indolore, mais ce n'est pas systématique et c'est donc une mauvaise pratique.
Donc au mieux faire la jointure dans le WHERE ou dans le JOIN sont d'égale performance, parce que l'optimiseur veille au grain, au pire, la coder dans le WHERE dégrade les performances.
Par ailleurs, une jointure externe (OUTER JOIN) sera le plus souvent plus lente à exécuter qu'une jointure interne, puisque le nombre de lignes en résultat est plus important
Partager