Ogólnie rzecz biorąc, INNER JOIN i EXISTS to różne rzeczy.
Pierwsza zwraca duplikaty i kolumny z obu tabel, druga zwraca jeden rekord i jako predykat zwraca rekordy tylko z jednej tabeli.
Jeśli wykonasz sprzężenie wewnętrzne na UNIQUE kolumny, wykazują taką samą wydajność.
Jeśli wykonasz sprzężenie wewnętrzne na zestawie rekordów z DISTINCT zastosowane (aby pozbyć się duplikatów), EXISTS jest zwykle szybszy.
IN i EXISTS klauzule (z korelacją equijoin) zwykle używają jednego z kilku SEMI JOIN algorytmy, które są zwykle bardziej wydajne niż DISTINCT na jednym ze stołów.
Zobacz ten artykuł na moim blogu:
- IN vs. JOIN vs. EXISTS