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

Oracle db Joins vs FROM a, b, c

Non. Oracle, comme toute autre base de données relationnelle raisonnable, est plus efficace lorsque vous effectuez des opérations basées sur des ensembles et lorsque vous effectuez des jointures plutôt que d'émuler des jointures de manière procédurale (avec, par exemple, des boucles de curseur imbriquées).

Je suppose, cependant, que vous ne parlez pas vraiment de code sans jointures. Je suppose que vous parlez d'un code qui utilise une syntaxe de jointure différente de celle à laquelle vous êtes habitué. Les deux

SELECT a.*
  FROM a
       JOIN b ON (a.a_id = b.a_id)
       JOIN c ON (b.b_id = c.b_id)

et

SELECT a.*
  FROM a,
       b,
       c
 WHERE a.a_id = b.a_id
   AND b.b_id = c.b_id

sont des requêtes qui joignent a à b à c . Les deux requêtes sont exactement identiques - l'analyseur Oracle réécrira en interne la première requête dans la seconde. La seule différence est que la première requête utilise la nouvelle syntaxe SQL 99 pour spécifier ses jointures.

Historiquement, Oracle a été relativement en retard pour adopter la syntaxe SQL 99, il y a une énorme quantité de code qui a été écrit avant que la syntaxe SQL 99 ne soit disponible, et pas mal de gens d'Oracle préfèrent l'ancienne syntaxe par habitude si rien d'autre. Pour toutes ces raisons, il est relativement courant de trouver des projets basés sur Oracle utilisant exclusivement l'ancienne syntaxe de jointure. Il n'y a rien de mal à cela (bien que je préfère personnellement la nouvelle syntaxe).