sql >> Database >  >> RDS >> Sqlserver

EXISTS vs JOIN en gebruik van de EXISTS-clausule

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.



  1. Microsoft Access Tips en trucs deel 2 – Formulieren

  2. Geen dialecttoewijzing voor JDBC-type:-9

  3. Gelijk aan externe Oracle-tabellen in SQL Server

  4. Hoe de huidige instellingen voor puntopdrachten in SQLite te tonen