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