Най-общо казано, INNER JOIN и EXISTS са различни неща.
Първият връща дубликати и колони от двете таблици, вторият връща един запис и, като предикат, връща записи само от една таблица.
Ако направите вътрешно присъединяване на UNIQUE колона, те показват еднакво представяне.
Ако направите вътрешно присъединяване към набор от записи с DISTINCT приложен (за да се отървете от дубликатите), EXISTS обикновено е по-бързо.
IN и EXISTS клаузите (с равносвързана корелация) обикновено използват една от няколкото SEMI JOIN алгоритми, които обикновено са по-ефективни от DISTINCT на една от масите.
Вижте тази статия в моя блог:
- IN срещу JOIN срещу EXISTS