sql >> Database >  >> RDS >> Oracle

Oracle db joins vs FROM a,b,c

Nee. Oracle is, net als elke andere redelijke relationele database, efficiënter wanneer u op sets gebaseerde bewerkingen uitvoert en wanneer u joins doet in plaats van procedureel joins te emuleren (met bijvoorbeeld geneste cursorlussen).

Mijn gok is echter dat je het niet echt hebt over code zonder joins. Ik vermoed dat je het hebt over code die een andere join-syntaxis gebruikt dan je gewend bent. Beide

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

en

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

zijn zoekopdrachten die zich bij a voegen naar b naar c . De twee query's zijn precies identiek - de Oracle-parser zal de eerste query intern in de tweede herschrijven. Het enige verschil is dat de eerste query de nieuwere SQL 99-syntaxis gebruikt om de joins op te geven.

Historisch gezien was Oracle relatief laat met het adopteren van de SQL 99-syntaxis, er is een enorme hoeveelheid code geschreven voordat de SQL 99-syntaxis beschikbaar was, en nogal wat Oracle-mensen geven uit gewoonte de voorkeur aan de oude stijl-syntaxis als niets anders. Om al deze redenen is het relatief gebruikelijk om op Oracle gebaseerde projecten te vinden die uitsluitend de oudere join-syntaxis gebruiken. Daar is op zich niets mis mee (hoewel ik persoonlijk de voorkeur geef aan de nieuwere syntaxis).




  1. Hoe de laatst ingevoegde id te krijgen?

  2. Moet ik mysql_real_escape_string het wachtwoord invoeren dat in het registratieformulier is ingevoerd?

  3. kolomvolgorde in SELECT * instructie - gegarandeerd?

  4. Logboek van SQL Server 2008 wordt niet afgekapt