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

Oracle:Изтриване отдолу нагоре

Тъй като се интересувате от алгоритъма, въпросът ви изглежда се свежда до разликата между IN и EXISTS тъй като вашите два примера са едни и същи, освен за IN промяна на EXISTS в изтриването от CHILD таблица.

През годините е писано доста за тази разлика, но по същество IN обикновено се използва, когато броят на компараторите е малък, докато EXISTS е по-ефективен за подзаявки, връщащи по-голям брой компаратори (особено ако тези стойности съдържат голям брой дубликати).

IN трябва да оцени всеки върнат компаратор, докато EXISTS е доволен, когато срещне първото съвпадение.

Има изключения от това и ако ги потърсите в Google, ще ги намерите, но като цяло това изглежда е вярно.

Tom Kyte (Oracle VP) има много добър отговор с обяснения тук:http://asktom.oracle.com/pls/asktom/f?p=100:11:2148775836129778::::P11_QUESTION_ID:953229842074

TechRepublic също има добро обяснение тук:http://www.techrepublic.com/article/oracle-tip-understand-the-difference-between-in-and-exists-in-subqueries/5297080

Надявам се това да помогне...




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle XE регистър на заявките

  2. RobotFramework :cx_Oracle - FAIL :InternalError:Няма Oracle грешка?

  3. Вложените скоби в клаузата FROM валиден ли е синтаксисът на Oracle SQL?

  4. Въведение в групово събиране на PL/SQL в базата данни на Oracle

  5. PL/SQL - Незадължителни условия в клаузата where - без динамичен sql?