Erinevused SQL-i vahel ja sisemuses

SQL on olemas vs

Probleemilahendus TSQL-is on saadaval erinevate meetodite abil ja soovitud tulemusi saab näha ükskõik millise neist abil. Üks viis lõpptulemuste saavutamiseks on IN- ja EXISTS-klauslite kasutamine. Klauslite kasutamine aitab tulemuste komplekti filtreerida, viidates saadaolevale alampäringule. IN ja EXISTSi teostus erineb pisut ja just neid erinevusi hinnatakse.

Erinevate tegurite hulgast sõltub, kas IN või EXISTS võetakse kasutusele. Üks neist on tabelis saadaolev andmemaht. Tohutu hulga andmete tulemuseks on see, et SQL-server naaseb indeksotsingu asemel indeksiskaneerimisega.

Erinevused

Esitatud statistika räägib palju ka täitmisplaanist, mida tuleks järgida. Erinevus kuvatakse siis, kui server on kogunud piisavalt statistikat kehtiva otsuse tegemiseks ja kui esimest korda statistikat pole. Kasutatav riistvara määrab ka selle, kas kasutatakse IN või EXISTS. See sõltub suuresti saadaolevate protsessorite arvust.

EKSISTID käivitatakse siis, kui on vaja vastendada päringu tulemused teise alampäringuga. IN seevastu kasutatakse loendis olevate konkreetsete veergude väärtuste leidmiseks. Kasutamise otsus põhineb ainuüksi sobivusel, st kui tunnete, et selle kasutamine on asjakohane.

Kui kasutatakse alampäringut ja tagastatakse nullväärtus, muutub kogu avaldus NULLiks. See osutab tegelikult märksõnade OLEMASOLU kasutamisele. IN-märksõna kasutamine toimub siis, kui on vaja võrrelda subkoodide erinevaid väärtusi. Märksõna EXISTS kasutatakse peamiselt tõeste või valede väidete hindamisel ja IN kasutatakse enamikes vastavates alampäringu lausetes.

Üldiselt on EXISTS kiirem kui IN, põhjuseks on see, et EXISTSi käivitamisel on otsing leidnud kokkulangevuse ja vaadatakse läbi, kas tingimus on tõeks osutunud. IN käivitamisel kogub see kõik alampäringu tulemused ja esitab need edasiseks töötlemiseks ning see protsess võtab natuke aega.

Oluline on märkida, et päringu sõnastus peab olema õigesti tehtud ja enne selle käivitamist kontrollitud. Suutmatus tagada, et päringul oleks õiged tulemused, kui eksisteerivad eksisteerijad ja IN esitavad erinevaid väärtusi, pole see ka nende eesmärk SQL-serveris. Optimeerija peab alati olema optimaalne, kui ta töötab.

Kokkuvõte

Probleemide lahendamine TSQL-is toimub tavaliselt EXISTS ja IN abil.

EXISTS-i ja IN-i kasutuselevõtmisel täheldatakse väikeseid erinevusi, ehkki optimeerimine peaks andma sama väärtuse.

Statistika on üks määrajaid, kas rakendatakse olemasolevaid või sisulisi programme

Kasutatav riistvara on kriitiline ka selle määramisel, kas EXISTS või IN tuleb kasutusele võtta

EKSISTIDE käitamine on kasulik siis, kui on vaja antud päringu tulemusi seostada teise alampäringuga. EKSISTID on väga levinud ka siis, kui tõesed või valed väited vajavad hindamist.

IN kasutatakse tavaliselt siis, kui on vaja hankida loendist kindlad veerud. Samuti kasutatakse seda tavaliselt siis, kui alamkoodides on vaja väärtusi võrrelda.

EXISTS on üldiselt kiirem kui IN, kuna see töötab, leiab tabamuse ja vaatab üle, kas tingimus on tõeks osutunud

IN on aeglasem, kuna kogub kõik alampäringu tulemused ja töötleb seda.

Ehkki esinevad erinevad täideviimised, peaks optimeerimine andma sarnased tulemused ka EXISTSis ja INis.