Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle db Joins vs FROM a,b,c

Nein. Oracle ist, wie jede andere vernünftige relationale Datenbank, effizienter, wenn Sie mengenbasierte Operationen und Verknüpfungen durchführen, anstatt Verknüpfungen prozedural zu emulieren (mit beispielsweise verschachtelten Cursorschleifen).

Ich vermute jedoch, dass Sie nicht wirklich über Code sprechen, dem Joins fehlen. Ich vermute, dass Sie über Code sprechen, der eine andere Join-Syntax verwendet, als Sie es gewohnt sind. Beide

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

und

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

sind Abfragen, die a verbinden zu b zu c . Die beiden Abfragen sind genau identisch – der Oracle-Parser schreibt tatsächlich intern die erste Abfrage in die zweite um. Der einzige Unterschied besteht darin, dass die erste Abfrage die neuere SQL 99-Syntax verwendet, um ihre Joins anzugeben.

Historisch gesehen hat Oracle die SQL 99-Syntax relativ spät übernommen, es gibt eine enorme Menge an Code, die geschrieben wurde, bevor die SQL 99-Syntax verfügbar war, und nicht wenige Oracle-Leute bevorzugen die alte Syntax nicht zuletzt aus Gewohnheit. Aus all diesen Gründen ist es relativ üblich, Oracle-basierte Projekte zu finden, die ausschließlich die ältere Join-Syntax verwenden. Daran ist grundsätzlich nichts auszusetzen (obwohl ich persönlich die neuere Syntax bevorzuge).