Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle db присъединява срещу FROM a,b,c

Не. Oracle, като всяка друга разумна релационна база данни, е по-ефективен, когато извършвате операции, базирани на набори, и когато правите съединявания, вместо процедурно емулиращи съединявания (с, да речем, вложени цикли на курсора).

Моето предположение обаче е, че всъщност не говорите за код, който няма присъединявания. Предполагам, че говорите за код, който използва синтаксис на присъединяване, различен от този, с който сте свикнали. И двете

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

и

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

са заявки, които се присъединяват към a към b до c . Двете заявки са напълно идентични - анализаторът на Oracle всъщност ще пренапише вътрешно първата заявка във втората. Единствената разлика е, че първата заявка използва по-новия синтаксис на SQL 99, за да посочи своите съединения.

Исторически погледнато, Oracle беше сравнително късно да приеме синтаксиса на SQL 99, има огромно количество код, който е написан преди синтаксисът на SQL 99 да бъде наличен, и доста хора на Oracle предпочитат синтаксиса в стар стил, ако не по навик. Поради всички тези причини е сравнително често да се намират базирани на Oracle проекти, използващи изключително по-стария синтаксис за присъединяване. В това няма нищо лошо (въпреки че аз лично предпочитам по-новия синтаксис).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да намерите най-припокриващия се период от време с периоди от време

  2. Грешка в Oracle.DataAccess

  3. как да прехвърля dbcp връзка към Oracle връзка?

  4. Добър инструмент за разработка и управление на база данни на Oracle в Windows

  5. Извикване на съхранена ПРОЦЕДУРА в Toad