sql >> Databáze >  >> RDS >> Oracle

Oracle:Odstranění zdola nahoru

Protože vás zajímá algoritmus, zdá se, že se vaše otázka scvrkává na rozdíl mezi IN a EXISTS protože vaše dva příklady jsou stejné, kromě IN změna na EXISTS v odstranění z CHILD tabulka.

O tomto rozdílu toho bylo za ta léta napsáno docela dost, ale v podstatě IN se obecně používá tam, kde je počet komparátorů malý, zatímco EXISTS je efektivnější pro poddotazy vracející větší počet komparátorů (zejména pokud tyto hodnoty obsahují velký počet duplikátů).

IN musí vyhodnotit každý vrácený komparátor, zatímco EXISTS je spokojen, když narazí na první shodu.

Existují výjimky a pokud je zadáte do Googlu, najdete je, ale celkově to vypadá, že to platí.

Tom Kyte (VP Oracle) má velmi dobrou odpověď s vysvětlením zde:http://asktom.oracle.com/pls/asktom/f?p=100:11:2148775836129778::::P11_QUESTION_ID:953274

TechRepublic má také dobré vysvětlení zde:http://www.techrepublic.com/article/oracle-tip-understand-the-difference-between-in-and-exists-in-subqueries/5297080

Doufám, že to pomůže...




  1. Jak přidat primární klíč s automatickým přírůstkem na základě pořadí sloupců?

  2. MySQL Server na MAMP-Windows se nespustí

  3. SQL Server:Jak volat uživatelem definovanou funkci (UDF) na propojeném serveru?

  4. Počet řádků v Doktríně 2