sql >> Databáze >  >> RDS >> Oracle

Oracle db Joins vs FROM a,b,c

Ne. Oracle, stejně jako jakákoli jiná rozumná relační databáze, je efektivnější, když provádíte operace založené na množinách a když provádíte spojení, spíše než procedurální emulaci spojení (řekněme s vnořenými smyčkami kurzoru).

Domnívám se však, že ve skutečnosti nemluvíte o kódu, který postrádá spojení. Hádám, že mluvíte o kódu, který používá jinou syntaxi spojení, než na kterou jste zvyklí. Oba

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

a

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

jsou dotazy, které spojují a na b na c . Tyto dva dotazy jsou přesně totožné – analyzátor Oracle ve skutečnosti interně přepíše první dotaz na druhý. Jediný rozdíl je v tom, že první dotaz používá k určení spojení novější syntaxi SQL 99.

Historicky byl Oracle relativně pozdě na přijetí syntaxe SQL 99, existuje obrovské množství kódu, který byl napsán dříve, než byla syntaxe SQL 99 k dispozici, a mnoho lidí z Oracle preferuje syntaxi starého stylu ze zvyku, pokud nic jiného. Ze všech těchto důvodů je poměrně běžné najít projekty založené na Oracle používající výhradně starší syntaxi spojení. Ve své podstatě na tom není nic špatného (ačkoli osobně preferuji novější syntaxi).




  1. Vyloučit horní a dolní n řádky v SQL

  2. Souběžné provádění více transakcí JPA

  3. Dotaz na postgres jsonb podle hodnoty bez ohledu na klíče

  4. Rozhodněte se mezi monitorováním na základě agenta a monitorováním bez agenta