Verschillen tussen Sql bestaan ​​en in Verschil tussen

Anonim

Sql Bestaat versus In

Het oplossen van problemen in TSQL is beschikbaar via verschillende methoden en de gewenste resultaten kunnen worden bekeken met behulp van een van deze methoden. Een van de manieren waarop de eindresultaten kunnen worden behaald, is door het gebruik van IN- en EXISTS-clausules. Het gebruik van de clausules helpt bij het filteren van de resultatenset met verwijzing naar een subquery die beschikbaar is. De uitvoering van IN en EXISTS verschilt enigszins en het zijn deze verschillen die worden geëvalueerd.

Er zijn verschillende factoren die bepalen of IN of EXISTS al dan niet zal worden uitgerold. Een daarvan is de hoeveelheid gegevens die in de tabel beschikbaar is. Een enorme hoeveelheid gegevens resulteert in de terugkeer van de SQL-server naar het gebruik van een indexscan in plaats van het gebruik van een Index Seek.

Verschillen

De gegeven statistieken vertellen ook veel over het uitvoeringsplan dat moet worden gevolgd. Het verschil wordt getoond wanneer de server voldoende statistieken heeft verzameld om een ​​geldige beslissing te nemen en wanneer er de eerste keer geen statistieken zijn. De gebruikte hardware bepaalt ook of IN of EXISTS zal worden gebruikt. Dit is grotendeels afhankelijk van het aantal beschikbare CPU's.

EXISTS worden uitgevoerd wanneer de resultaten van een query moeten worden vergeleken met een andere subquery. IN aan de andere kant wordt gebruikt bij het ophalen van de waarden van specifieke kolommen die in een lijst liggen. De beslissing om te gebruiken is uitsluitend gebaseerd op geschiktheid, i. e. als u vindt dat het gebruik ervan geschikt is.

In het geval dat een subquery wordt gebruikt en een nulwaarde wordt geretourneerd, wordt de gehele instructie NULL. Dit wijst in feite op het gebruik van het EXISTS-sleutelwoord. Het gebruik van het IN-trefwoord komt tot stand wanneer een vergelijking van verschillende waarden in subquery's is vereist. Het EXISTS-sleutelwoord wordt voornamelijk gebruikt bij de evaluatie van echte of valse verklaringen en IN wordt gebruikt in de meeste overeenkomstige subquery-instructies.

In het algemeen zal EXISTS sneller zijn dan IN, de reden is dat wanneer EXISTS wordt uitgevoerd, de zoekopdracht een hit heeft gevonden en zal bekijken of de voorwaarde waar is gebleken. Wanneer IN wordt uitgevoerd, verzamelt het alle resultaten van de subquery en presenteert deze voor verdere verwerking, en dit proces duurt een tijdje.

Het is belangrijk op te merken dat het formuleren van de vraag juist moet worden gedaan en moet worden gecontroleerd voordat deze wordt uitgevoerd. Als u ervoor zorgt dat de query de juiste resultaten oplevert voor EXISTS en IN die verschillende waarden presenteren, is dit niet het doel van het gebruik ervan in een SQL-server. De optimizer moet altijd optimaal zijn wanneer u werkt zoals het hoort.

Samenvatting

Probleemoplossing in TSQL wordt meestal gedaan met EXISTS en IN.

Er worden kleine verschillen waargenomen bij het uitrollen van EXISTS en IN, hoewel optimalisatie voor elk dezelfde waarde moet geven.

Statistieken zijn een van de bepalende factoren voor de vraag of EXISTS of IN wordt uitgerold

Gebruikte hardware is ook van cruciaal belang om te bepalen of EXISTS of IN moet worden geïmplementeerd

Het uitvoeren van EXISTS is handig wanneer er moeten de resultaten van een bepaalde query correleren met een andere subquery.EXISTS is ook heel gebruikelijk wanneer echte of onjuiste verklaringen moeten worden geëvalueerd.

IN wordt vaak gebruikt wanneer specifieke kolommen in een lijst moeten worden opgehaald. Het wordt ook vaak gebruikt als waardevergelijking in subquery's is vereist.

EXISTS is over het algemeen sneller dan IN als het wordt uitgevoerd, vindt een hit en controleert of de voorwaarde is bewezen dat

IN langzamer is omdat het alle resultaten van de subquery verzamelt en verwerkt.

Hoewel verschillende uitvoeringen aanwezig zijn, moet optimalisatie soortgelijke resultaten opleveren in EXISTS en IN.