Oracle
 sql >> Database >  >> RDS >> Oracle

Oracle db Join vs DA a,b,c

No. Oracle, come qualsiasi altro database relazionale ragionevole, è più efficiente quando si eseguono operazioni basate su insiemi e quando si eseguono join anziché emulare proceduralmente i join (con, ad esempio, cicli di cursore nidificati).

La mia ipotesi, tuttavia, è che tu non stia davvero parlando di codice privo di join. La mia ipotesi è che tu stia parlando di codice che utilizza una sintassi di join diversa da quella a cui sei abituato. Entrambi

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

e

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

sono query che si uniscono a a a b a c . Le due query sono esattamente identiche:il parser Oracle riscriverà internamente la prima query nella seconda. L'unica differenza è che la prima query utilizza la più recente sintassi SQL 99 per specificare i suoi join.

Storicamente, Oracle è stato relativamente in ritardo per adottare la sintassi SQL 99, c'è un'enorme quantità di codice che è stato scritto prima che la sintassi SQL 99 fosse disponibile e un bel po' di persone Oracle preferiscono la sintassi vecchio stile per abitudine se non altro. Per tutti questi motivi, è relativamente comune trovare progetti basati su Oracle che utilizzino esclusivamente la vecchia sintassi di join. Non c'è nulla di intrinsecamente sbagliato in questo (anche se personalmente preferisco la sintassi più recente).