Sql pastāv vs
Problēmu risināšana TSQL ir pieejama, izmantojot dažādas metodes, un vēlamos rezultātus var redzēt, izmantojot jebkuru no tām. Viens no veidiem, kā var sasniegt gala rezultātus, ir IN un EXISTS klauzulu izmantošana. Klauzulu izmantošana palīdz filtrēt rezultātu kopu, atsaucoties uz pieejamo apakšvaicājumu. IN un EXISTS izpilde nedaudz atšķiras, un tieši šīs atšķirības tiek novērtētas.
Pastāv dažādi faktori, kas nosaka, vai tiks ieviests IN vai EXISTS. Viens no tiem ir tabulā pieejamais datu apjoms. Liela datu apjoma dēļ SQL serveris atkal izmanto indeksa skenēšanu, nevis indeksa meklēšanu.
Atšķirības
Sniegtie statistikas dati arī daudz stāsta par izpildes plānu, kas būtu jāievēro. Atšķirība tiek parādīta, kad serveris ir uzkrājis pietiekami daudz statistikas, lai pieņemtu pamatotu lēmumu, un kad statistikas nav pirmo reizi. Izmantojamā aparatūra arī nosaka, vai tiks izmantots IN vai EXISTS. Tas lielā mērā ir atkarīgs no pieejamo CPU skaita.
EKSPERTI tiek palaisti, kad ir jāsaskaņo vaicājuma rezultāti ar citu apakšvaicājumu. IN, no otras puses, tiek izmantots, lai izgūtu vērtību konkrētām slejām, kas atrodas sarakstā. Lēmums, kuru izmantot, ir pamatots tikai ar piemērotību, t.i., kad uzskatāt, ka tā lietošana ir piemērota.
Gadījumā, ja tiek izmantots apakšvaicājums un tiek atgriezta nulles vērtība, viss paziņojums kļūst NULL. Faktiski tas norāda uz EXISTS atslēgvārda izmantošanu. IN atslēgvārds tiek izmantots, kad nepieciešams salīdzināt dažādas apakšklases vērtības. Atslēgvārds EXISTS galvenokārt tiek izmantots patiesu vai nepatiesu apgalvojumu novērtēšanai, un IN tiek izmantots visatbilstošākajos apakšvaicājumu paziņojumos.
Parasti EXISTS būs ātrāks nekā IN, iemesls ir tas, ka, palaižot EXISTS, meklēšanā ir atrasts trāpījums un tiks pārskatīts, vai nosacījums ir izrādījies taisnīgs. Palaižot IN, tas apkopo visus rezultātus no apakšvaicājumiem un iesniedz tos tālākai apstrādei, un šis process prasa laiku.
Ir svarīgi atzīmēt, ka vaicājuma formulējums jāveic pareizi un jāpārbauda pirms tā palaišanas. Nespēja nodrošināt, ka vaicājumam ir pareizi rezultāti, kas pastāv, lai EXISTS un IN uzrādītu dažādas vērtības, un tas nav mērķis to izmantošanai SQL serverī. Optimizētājam vienmēr jābūt optimālam, strādājot tā, kā vajadzētu.
Kopsavilkums
Problēmu risināšana TSQL parasti tiek veikta ar EXISTS un IN.
Izlaižot EXISTS un IN, tiek novērotas nelielas atšķirības, lai gan optimizācijai katram vajadzētu būt vienādai.
Statistika ir viens no noteicošajiem faktoriem, vai tiks ieviesti EXISTS vai IN
Izmantotajai aparatūrai ir arī liela nozīme, nosakot, vai jāizvieto EXISTS vai IN
EXISTS palaišana būs noderīga, ja būs nepieciešams korelēt dotā vaicājuma rezultātus ar citu apakšvaicājumu. EXISTI ir ļoti izplatīti arī gadījumos, kad nepieciešams novērtēt patiesus vai nepatiesus apgalvojumus.
IN parasti izmanto, ja ir nepieciešams izgūt noteiktas kolonnas sarakstā. To parasti izmanto arī tad, ja ir nepieciešama vērtību salīdzināšana apakšvaicājumos.
EXISTS parasti ir ātrāks nekā IN, jo darbojas, atrod trāpījumu un pārskata, vai nosacījums ir izrādījies taisnīgs
IN darbība ir lēnāka, jo tā apkopo visus rezultātus no apakšvaicājumiem un apstrādā tos.
Lai arī ir dažādas izpildes, optimizācijai vajadzētu dot līdzīgus rezultātus EXISTS un IN.