Est-il vrai que quel que soit le type de jointure que vous utilisez, si votre clause WHERE vérifie la table fk d'une table, elle devient identique à une jointure interne tant que le jeu de résultats est connecté? En d'autres termes, si votre requête sql comporte des éléments comme:Est-il vrai que tous les types de jointures se réduisent à des jointures internes en présence de la vérification de fk d'une table?
"Sélectionnez ... à partir de A A jointure B Sur (...) E, F Jointure externe complète G sur (A.pk = G.fk) ... O WH A.pk = G.fk et A.pk = B.fk et etc ... "
Dans la requête ci-dessus, A est joint à gauche à B, alors que G est extérieurement joint à A sur son fk. Mais comme la clause where a les deux vérifications, toute la requête se réduit à quelque chose comme:
"Sélectionnez ... de A INNER JOIN B Sur (...) E, F INNER Rejoindre G on (A.pk = G.fk) ... OERE etc ... " ?
La raison de cette requête est que j'ai de nombreuses jointures de type cartésien ainsi que des clauses where sur la table fk d'une autre table, ce qui ralentit la requête. Je pensais remplacer les produits cartésiens par les deux Joints Gauche combinés avec le maintien de toutes les clauses where, ou de toutes les Jointures Inner.
aussi, est-STH comme cet équivalent: « Select ... de A INNER JOIN B (A.id = B.a_id), C, D, F où A. id = F.id " à: " Sélectionnez ... A Une jointure interne B sur (A.id = B.a_id), C, D INNER JOIN F sur A.id = F.a_id " En fait, la question principale est que F a une jointure non pas avec D mais avec A, et A se produit beaucoup plus tôt dans l'expression, ainsi la jointure interne fonctionne correctement pour réduire les deux cas pour retourner le même resultset? – umar