Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle db Łączenia vs OD a,b,c

Nie. Oracle, jak każda inna rozsądna relacyjna baza danych, jest bardziej wydajna, gdy wykonujesz operacje oparte na zbiorach i gdy robisz złączenia, zamiast proceduralnie emulując złączenia (np. za pomocą zagnieżdżonych pętli kursora).

Domyślam się jednak, że tak naprawdę nie mówisz o kodzie, w którym brakuje złączeń. Domyślam się, że mówisz o kodzie, który używa innej składni sprzężenia niż jesteś przyzwyczajony. Oba

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

i

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

to zapytania, które łączą a do b do c . Te dwa zapytania są dokładnie identyczne — parser Oracle wewnętrznie przepisze pierwsze zapytanie na drugie. Jedyna różnica polega na tym, że pierwsze zapytanie używa nowszej składni SQL 99 do określenia złączeń.

Historycznie rzecz biorąc, Oracle stosunkowo późno zaadoptowało składnię SQL 99, istnieje ogromna ilość kodu, który został napisany przed udostępnieniem składni SQL 99, a wielu pracowników Oracle z przyzwyczajenia woli starą składnię. Z tych wszystkich powodów stosunkowo często zdarza się, że projekty oparte na Oracle korzystają wyłącznie ze starszej składni łączenia. Nie ma w tym nic złego (chociaż osobiście wolę nowszą składnię).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyliczanie wierszy w sprzężeniu wewnętrznym

  2. UID – Zwróć identyfikator bieżącej sesji w Oracle

  3. Jak mogę utworzyć unikalny indeks w Oracle, ale zignorować wartości null?

  4. Przekazywanie ClientInfo/ClientIdentifier na syscontext/połączenie z Hibernate w celach audytowych

  5. Jak wypełnić zbiór danych za pomocą C# z bazy danych Oracle