sql >> Database teknologi >  >> RDS >> Sqlserver

EXISTS vs JOIN og brug af EXISTS-klausulen

EXISTS bruges til at returnere en boolesk værdi, JOIN returnerer en helt anden tabel

EXISTS bruges kun til at teste, om en underforespørgsel returnerer resultater og kortslutter, så snart den gør. JOIN bruges til at udvide et resultatsæt ved at kombinere det med yderligere felter fra en anden tabel, som der er en relation til.

I dit eksempel er forespørgslerne semantisk ækvivalente.

Generelt skal du bruge EXISTS når:

  • Du behøver ikke returnere data fra den relaterede tabel
  • Du har duper i den relaterede tabel (JOIN kan forårsage duplikerede rækker, hvis værdier gentages)
  • Du vil kontrollere eksistensen (brug i stedet for LEFT OUTER JOIN...NULL tilstand)

Hvis du har korrekte indekser, er EXISTS for det meste vil fungere identisk med JOIN . Undtagelsen er på meget komplicerede underforespørgsler, hvor det normalt er hurtigere at bruge EXISTS .

Hvis din JOIN nøglen ikke er indekseret, kan det være hurtigere at bruge EXISTS men du bliver nødt til at teste for din specifikke omstændighed.

JOIN syntaks er lettere at læse og klarere normalt også.



  1. Oprettelse af et brugerdefineret SQL Server Docker-billede oven på det officielle billede

  2. Hvordan bruger du variabler i et simpelt PostgreSQL-script?

  3. Use Cases for SQL Server MERGE Statement:Synkronisering af online- og historietabeller

  4. Sådan beregnes median i PostgreSQL