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...