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

Oracle db Joins vs FROM a,b,c

Nej. Oracle, som enhver anden rimelig relationel database, er mere effektiv, når du udfører sæt-baserede operationer, og når du udfører joins i stedet for proceduremæssigt at emulere joins (med f.eks. indlejrede cursor-løkker).

Mit gæt er dog, at du ikke rigtig taler om kode, der mangler joins. Mit gæt er, at du taler om kode, der bruger en anden join-syntaks, end du er vant til. Begge dele

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

og

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

er forespørgsler, der forbinder a til b til c . De to forespørgsler er nøjagtigt identiske - Oracle-parseren vil faktisk internt omskrive den første forespørgsel til den anden. Den eneste forskel er, at den første forespørgsel bruger den nyere SQL 99-syntaks til at angive dens joinforbindelser.

Historisk set var Oracle relativt sent til at adoptere SQL 99-syntaksen, der er en enorm mængde kode, der blev skrevet før SQL 99-syntaksen var tilgængelig, og en del Oracle-folk foretrækker den gamle stilsyntaks af vane om ikke andet. Af alle disse grunde er det relativt almindeligt at finde Oracle-baserede projekter, der udelukkende bruger den ældre join-syntaks. Der er ikke noget iboende galt med det (selvom jeg personligt foretrækker den nyere syntaks).




  1. Hvordan ændres datostil i PostgreSQL?

  2. MySQL-ydeevneoptimering:rækkefølge efter dato og klokkeslæt felt

  3. SQL (ORACLE):ORDER BY og LIMIT

  4. Hvordan kan jeg indsætte data i en MySQL-database?