Sql postoji u odnosu na
Rješavanje problema u TSQL-u dostupno je na različite načine, a željeni rezultati mogu se vidjeti pomoću bilo koje od njih. Jedan od načina na koji se krajnji rezultati mogu postići je upotrebom klauzula IN i EXISTS. Upotreba rečenica pomaže filtriranju skupa rezultata s obzirom na podupit koji je dostupan. Izvedba IN i EXISTS malo se razlikuje i upravo se te razlike procjenjuju.
Postoje razni faktori koji određuju hoće li se ili ne pojaviti IN ili postoje. Jedna od njih je i količina podataka koja je dostupna u tablici. Ogromna količina podataka rezultira da se SQL poslužitelj više vraća pretraživanju indeksa, a ne upotrebi indeksa traženja.
Razlike
Dati statistički podaci govore i puno o planu izvršenja koji se treba slijediti. Razlika je prikazana kada je poslužitelj prikupio dovoljno statistika za donošenje valjane odluke i kada nema prve statistike. Hardver koji se koristi također određuje da li će se koristiti IN ili EXISTS. To uvelike ovisi o broju dostupnih CPU-a.
EXISTS se pokreću kada treba podudarati rezultate upita s drugim podupitom. S druge strane, IN se koristi pri dohvaćanju vrijednosti određenih stupaca koji se nalaze unutar popisa. Odluka o korištenju temelji se isključivo na prikladnosti, tj. Kada smatrate da je njegova upotreba prikladna.
U slučaju da se koristi podupitnik i vrati se nulta vrijednost, cijeli iskaz postaje NULL. To u stvari ukazuje na upotrebu ključne riječi EXISTS. Upotreba ključne riječi IN nastaje kada je potrebna usporedba različitih vrijednosti u podupitima. Ključna riječ EXISTS uglavnom se koristi u procjeni istinitih ili lažnih izjava, a IN se koristi u većini odgovarajućih izjava podupita.
Općenito, EXISTS će biti brži od IN. Razlog je taj što je kada se EXISTS pokrene, pretraživanje pronašlo pogodak i preispitavat će se da li se stanje pokazalo istinitim. Prilikom pokretanja IN prikuplja sve rezultate iz podupita i prezentira ih na daljnju obradu, a ovaj postupak traje neko vrijeme.
Važno je napomenuti da se fraziranje upita mora izvršiti ispravno i provjeriti prije pokretanja. Neuspjeh u osiguravanju ispravnosti upita da bi EXISTS i IN predstavili različite vrijednosti, a to nije cilj njihove uporabe u SQL poslužitelju. Optimizator uvijek mora biti optimalan kada treba raditi.
Sažetak
Rješavanje problema u TSQL-u obično se vrši s EXISTS-om i IN-om.
Neznatne razlike primjećuju se pri uvrštavanju EXISTS-a i IN-a, premda bi optimizacija za svaki trebala dati istu vrijednost.
Statistika je jedna od odrednica hoće li se EXISTS ili IN izbaciti
Hardver koji se koristi također je presudan u određivanju hoće li se EXISTS ili IN upotrebljavati
Pokretanje EXISTS-a bit će korisno kad treba povezati rezultate određenog upita s drugim podupitom. Postoje i vrlo često ako je istinita ili lažna izjava potrebna procjena.
IN se obično koristi kada je potrebno dohvatiti određene stupce na popisu. Također se obično koristi kada je potrebna usporedba vrijednosti u podupitima.
EXISTS je obično brži od IN-a dok traje, pronalazi pogodak i preispituje je li se stanje pokazalo istinitim
IN je sporiji jer prikuplja sve rezultate iz podupita i obrađuje ih.
Iako su prisutna različita pogubljenja, optimizacija bi trebala dati slične rezultate u sustavima EXISTS i IN.