EXISTS
wordt gebruikt om een booleaanse waarde te retourneren, JOIN
geeft een hele andere tabel terug
EXISTS
wordt alleen gebruikt om te testen of een subquery resultaten oplevert, en kortsluiting zodra dit het geval is. JOIN
wordt gebruikt om een resultatenset uit te breiden door deze te combineren met extra velden uit een andere tabel waarmee een relatie bestaat.
In uw voorbeeld zijn de zoekopdrachten semantisch equivalent.
Gebruik in het algemeen EXISTS
wanneer:
- U hoeft geen gegevens uit de gerelateerde tabel te retourneren
- Je hebt dupes in de gerelateerde tabel (
JOIN
kan dubbele rijen veroorzaken als waarden worden herhaald) - U wilt het bestaan controleren (gebruik in plaats van
LEFT OUTER JOIN...NULL
staat)
Als je de juiste indexen hebt, is de EXISTS
. meestal zal identiek presteren als de JOIN
. De uitzondering is op zeer gecompliceerde subquery's, waar het normaal gesproken sneller is om EXISTS
te gebruiken .
Als je JOIN
sleutel niet geïndexeerd is, kan het sneller zijn om EXISTS
te gebruiken maar u zult moeten testen voor uw specifieke omstandigheid.
JOIN
syntaxis is gemakkelijker te lezen en is normaal gesproken ook duidelijker.