sql >> Databasteknik >  >> RDS >> Sqlserver

EXISTS vs JOIN och användning av EXISTS-klausulen

EXISTS används för att returnera ett booleskt värde, JOIN returnerar en helt annan tabell

EXISTS används bara för att testa om en underfråga ger resultat och kortsluter så fort den gör det. JOIN används för att utöka en resultatuppsättning genom att kombinera den med ytterligare fält från en annan tabell som det finns en relation till.

I ditt exempel är frågorna semantiskt likvärdiga.

I allmänhet använder du EXISTS när:

  • Du behöver inte returnera data från den relaterade tabellen
  • Du har duper i den relaterade tabellen (JOIN kan orsaka dubbletter av rader om värden upprepas)
  • Du vill kontrollera existensen (använd istället för LEFT OUTER JOIN...NULL skick)

Om du har korrekta index, för det mesta EXISTS kommer att fungera identiskt med JOIN . Undantaget är på mycket komplicerade underfrågor, där det normalt går snabbare att använda EXISTS .

Om din JOIN nyckeln inte är indexerad, det kan vara snabbare att använda EXISTS men du måste testa för din specifika omständighet.

JOIN syntax är lättare att läsa och tydligare normalt också.



  1. Databasbelastningsbalansering med ProxySQL &AWS Aurora

  2. Många-till-många relationer exempel

  3. SQL CREATE DATABASE Syntax – Listad av DBMS

  4. Proxy-baserad dynamisk datamaskering i FieldShield