Obecně řečeno, INNER JOIN
a EXISTS
jsou různé věci.
První vrací duplikáty a sloupce z obou tabulek, druhá vrací jeden záznam a jako predikát vrací záznamy pouze z jedné tabulky.
Pokud provedete vnitřní spojení na UNIQUE
vykazují stejný výkon.
Pokud provedete vnitřní spojení u sady záznamů pomocí DISTINCT
použito (pro odstranění duplikátů), EXISTS
je obvykle rychlejší.
IN
a EXISTS
klauzule (s ekvijoinovou korelací) obvykle používají jednu z několika SEMI JOIN
algoritmy, které jsou obvykle efektivnější než DISTINCT
na jednom ze stolů.
Viz tento článek na mém blogu:
- IN vs. JOIN vs. EXISTS