sql >> Base de Datos >  >> RDS >> Oracle

Oracle db se une a DESDE a, b, c

No. Oracle, como cualquier otra base de datos relacional razonable, es más eficiente cuando realiza operaciones basadas en conjuntos y cuando realiza uniones en lugar de emular uniones de forma procesal (con, por ejemplo, bucles de cursor anidados).

Mi conjetura, sin embargo, es que en realidad no estás hablando de un código que carece de uniones. Supongo que está hablando de un código que usa una sintaxis de unión diferente a la que está acostumbrado. Ambos

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

y

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

son consultas que se unen a a a b a c . Las dos consultas son exactamente idénticas:el analizador de Oracle en realidad reescribirá internamente la primera consulta en la segunda. La única diferencia es que la primera consulta utiliza la sintaxis de SQL 99 más reciente para especificar sus uniones.

Históricamente, Oracle tardó relativamente en adoptar la sintaxis de SQL 99, hay una gran cantidad de código que se escribió antes de que la sintaxis de SQL 99 estuviera disponible, y bastantes personas de Oracle prefieren la sintaxis de estilo antiguo por costumbre, si nada más. Por todas esas razones, es relativamente común encontrar proyectos basados ​​en Oracle que utilicen exclusivamente la sintaxis de combinación anterior. No hay nada intrínsecamente malo en eso (aunque personalmente prefiero la sintaxis más nueva).