EXISTS se používá k vrácení booleovské hodnoty JOIN vrátí celou jinou tabulku
EXISTS se používá pouze k testování, zda dílčí dotaz vrací výsledky, a jakmile se tak stane, dojde ke zkratu. JOIN se používá k rozšíření sady výsledků jejím zkombinováním s dalšími poli z jiné tabulky, ke které existuje vztah.
Ve vašem příkladu jsou dotazy sémanticky ekvivalentní.
Obecně používejte EXISTS kdy:
- Nemusíte vracet data ze související tabulky
- V související tabulce máte podvody (
JOINmůže způsobit duplicitní řádky, pokud se hodnoty opakují) - Chcete zkontrolovat existenci (použijte místo
LEFT OUTER JOIN...NULLpodmínka)
Pokud máte správné indexy, většinou EXISTS bude fungovat stejně jako JOIN . Výjimkou jsou velmi komplikované poddotazy, kde je obvykle rychlejší použít EXISTS .
Pokud vaše JOIN klíč není indexován, může být rychlejší použít EXISTS ale budete muset otestovat své konkrétní okolnosti.
JOIN syntaxe je také normálně čitelnější a jasnější.