Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Oracle db Joins vs FROM a,b,c


Não. O Oracle, como qualquer outro banco de dados relacional razoável, é mais eficiente quando você faz operações baseadas em conjunto e quando faz junções, em vez de emular junções processualmente (com, digamos, loops de cursor aninhados).

Meu palpite, no entanto, é que você não está realmente falando sobre código que não possui junções. Meu palpite é que você está falando de código que usa uma sintaxe de junção diferente da que você está acostumado. Ambos
SELECT a.*
  FROM a
       JOIN b ON (a.a_id = b.a_id)
       JOIN c ON (b.b_id = c.b_id)

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

são consultas que unem a para b para c . As duas consultas são exatamente idênticas -- o analisador Oracle irá reescrever internamente a primeira consulta na segunda. A única diferença é que a primeira consulta usa a sintaxe SQL 99 mais recente para especificar suas junções.

Historicamente, a Oracle demorou relativamente a adotar a sintaxe SQL 99, há uma enorme quantidade de código que foi escrito antes que a sintaxe SQL 99 estivesse disponível, e algumas pessoas da Oracle preferem a sintaxe de estilo antigo por hábito, se nada mais. Por todas essas razões, é relativamente comum encontrar projetos baseados em Oracle usando exclusivamente a sintaxe de junção mais antiga. Não há nada inerentemente errado com isso (embora eu pessoalmente prefira a sintaxe mais recente).