sql >> Databasteknik >  >> RDS >> Oracle

Oracle db Joins vs FROM a,b,c

Nej. Oracle, som alla andra rimliga relationsdatabaser, är effektivare när du gör uppsättningsbaserade operationer och när du gör joins snarare än att procedurmässigt emulera joins (med till exempel kapslade markörslingor).

Min gissning är dock att du egentligen inte pratar om kod som saknar joins. Min gissning är att du pratar om kod som använder en annan join-syntax än du är van vid. Båda

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

och

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

är frågor som ansluter till a till b till c . De två frågorna är exakt identiska - Oracle-parsern kommer faktiskt internt att skriva om den första frågan till den andra. Den enda skillnaden är att den första frågan använder den nyare SQL 99-syntaxen för att specificera dess kopplingar.

Historiskt sett var Oracle relativt sent att anta SQL 99-syntaxen, det finns en enorm mängd kod som skrevs innan SQL 99-syntaxen var tillgänglig, och en hel del Oracle-folk föredrar den gamla stilsyntaxen av vana om inget annat. Av alla dessa skäl är det relativt vanligt att hitta Oracle-baserade projekt med enbart den äldre join-syntaxen. Det är inget fel med det (även om jag personligen föredrar den nyare syntaxen).




  1. Installera Oracle Client från kommandoraden utan användarinteraktion

  2. Lägg till applikationsnamn / programnamn i mysql-anslutningssträngen

  3. Infoga ett inlägg i Wordpress med MySql

  4. Hur testar man crontab-inträde?