Ang Mga Pagkakaiba sa Pagitan ng Sql ay Nasa At

Anonim

Sql Exists vs In

Ang paglutas ng problema sa TSQL ay magagamit sa pamamagitan ng iba't ibang mga pamamaraan at ang nais na mga resulta ay maaaring makita gamit ang anuman sa mga ito. Ang isa sa mga paraan na maaaring matamo ang mga resulta ay sa pamamagitan ng paggamit ng IN at EXISTS clauses. Ang paggamit ng mga clauses ay tumutulong sa pagsasala ng resulta na nakatakda sa pagtukoy sa isang subquery na magagamit. Ang pagpapatupad ng IN at EXISTS ay bahagyang naiiba at ito ang mga pagkakaiba na sinusuri.

Mayroong iba't ibang mga kadahilanan na nagpapasiya kung lilitaw ang IN o EXISTS. Ang isa sa mga ito ay ang halaga ng data na magagamit sa talahanayan. Ang isang malaking halaga ng mga resulta ng data sa SQL server na bumabalik sa paggamit ng index scan kaysa sa paggamit ng Index Seek.

Mga pagkakaiba

Ang mga istatistika na ibinigay ay nagsasabi rin ng maraming tungkol sa plano ng pagpapatupad na dapat sundin. Ang pagkakaiba ay ipinapakita kapag ang server ay naipon sapat na mga istatistika upang makagawa ng isang wastong desisyon at kapag walang mga istatistika sa unang pagkakataon. Tinutukoy din ng hardware na ginagamit kung ang IN o EXISTS ay nagtatrabaho. Ito ay higit na nakasalalay sa bilang ng magagamit na CPU.

Ang mga EXIT ay tumatakbo kapag kailangan upang tumugma sa mga resulta ng isang query sa isa pang subquery. SA sa kabilang banda ay ginagamit kapag kinukuha ang mga halaga ng mga partikular na haligi na nasa loob ng isang listahan. Ang desisyon na gamitin ay batay lamang sa pagiging angkop, yayamang nararamdaman mong angkop ang paggamit nito.

Sa pangyayari na ang isang subquery ay ginagamit at isang null halaga ay ibinalik, ang buong pahayag ay nagiging null. Ito ay sa katunayan ay tumutukoy sa paggamit ng EXISTS keyword. Ang paggamit ng IN keyword ay tungkol sa kung kailan ang paghahambing ng iba't ibang mga halaga sa mga subquery ay kinakailangan. Ang EXISTS na keyword ay higit sa lahat na ginagamit sa pagtatasa ng totoo o maling mga pahayag at IN ay ginagamit sa karamihan ng mga katumbas na mga pahayag subquery.

Sa pangkalahatan, ang EXISTS ay magiging mas mabilis kaysa sa IN, ang dahilan kung bakit kapag ang EXISTS ay tumatakbo, ang paghahanap ay nakatagpo ng hit at magrerepaso kung ang kondisyon ay napatunayang totoo. Kapag tumatakbo SA, kinokolekta nito ang lahat ng mga resulta mula sa subquery at nagtatanghal sa mga ito para sa karagdagang pagproseso, at ang prosesong ito ay tumatagal ng ilang sandali.

Mahalagang tandaan na ang pagbigkas ng tanong ay dapat gawin nang wasto at masuri bago ang pagpapatakbo. Pagkabigo upang matiyak na ang query ay tamang mga resulta sa EXISTS at sa pagpapakita ng iba't ibang mga halaga, at ito ay hindi ang layunin ng kanilang paggamit sa SQL server. Ang optimizer ay dapat palaging magiging optimal kapag nagtatrabaho ayon sa nararapat.

Buod

Ang paglutas ng problema sa TSQL ay karaniwang ginagawa sa EXISTS and IN.

Ang mga bahagyang pagkakaiba ay sinusunod kapag lumiligid ang EXISTS and IN, bagaman ang pag-optimize para sa bawat isa ay dapat magbigay ng parehong halaga.

Ang mga istatistika ay isa sa mga determinants ng kung ang EXISTS o SA ay bubuo

Ang mga kagamitan na ginagamit din ay kritikal sa pagtukoy kung ang mga EXISTS o IN ay dapat i-deploy

Magiging kapaki-pakinabang ang pagpapatakbo ng EXISTS kapag kailangan na iugnay ang mga resulta ng isang naibigay na query sa isa pang subquery. Ang mga eksaktong ay karaniwan din kapag ang totoo o hindi totoo na mga pahayag ay nangangailangan ng pagsusuri.

Karaniwang ginagamit ang IN sa kapag may pangangailangan na kunin ang mga partikular na haligi sa isang listahan. Gayundin karaniwan itong ginagamit kapag ang paghahambing sa halaga sa mga subquery ay kinakailangan.

Ang mga EXISTS ay karaniwang mas mabilis kaysa SA habang tumatakbo ito, hinahanap ang isang hit, at sinusuri kung napatunayang totoo ang kundisyon

Mas mabagal ang IN sa pagkolekta nito ang lahat ng mga resulta mula sa subquery at pinoproseso ito.

Bagaman mayroong iba't ibang mga executions, ang optimization ay dapat magbigay ng katulad na mga resulta sa EXISTS at IN.