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

Oracle:usuwanie od dołu

Ponieważ interesuje Cię algorytm, Twoje pytanie wydaje się sprowadzać do różnicy między IN i EXISTS ponieważ twoje dwa przykłady są takie same, zapisz dla IN zmiana na EXISTS w usuwaniu z CHILD tabeli.

Przez lata napisano o tej różnicy całkiem sporo, ale w istocie IN jest zwykle używany tam, gdzie liczba komparatorów jest niewielka, podczas gdy EXISTS jest bardziej wydajny w przypadku podzapytań zwracających większą liczbę komparatorów (zwłaszcza jeśli te wartości zawierają dużą liczbę duplikatów).

IN musi ocenić każdy zwrócony komparator, podczas gdy EXISTS jest usatysfakcjonowany, gdy napotka pierwszy mecz.

Są od tego wyjątki i jeśli wyszukasz je w Google, znajdziesz je, ale ogólnie rzecz biorąc, wydaje się to być prawdą.

Tom Kyte (Wiceprezes Oracle) ma bardzo dobrą odpowiedź z wyjaśnieniami tutaj:http://asktom.oracle.com/pls/asktom/f?p=100:11:2148775836129778::::P11_QUESTION_ID:953229842074

TechRepublic ma również dobre wyjaśnienie tutaj:http://www.techrepublic.com/article/oracle-tip-understand-the-difference-between-in-and-exists-in-subqueries/529780

Mam nadzieję, że to pomoże...




  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 funkcje, aby uzyskać rok z daty w Oracle

  2. Jak zdefiniować funkcję pl sql z dynamicznymi typami zwrotów w Oracle?

  3. Wkładki Oracle ładowane bezpośrednio przez JDBC?

  4. ORA-01861:literał nie pasuje do ciągu formatu

  5. Zamykanie zestawu wyników, ale nie zamykanie przygotowanego zestawienia