Обяснете планакод>
би ви показал защо точно трябва да използвате Exists
. Обикновено въпросът идва Exists vs Count(*)
. Съществува
е по-бърз. Защо?
-
По отношение на предизвикателствата, представени от NULL:когато подзаявката връща
Null
, за IN цялата заявка ставаNull
. Така че трябва да се справите и с това. Но използвайкиExist
, това е простоfalse
. Много по-лесно за справяне. ПростоIN
не може да сравни нищо сNull
ноСъществува
може. -
напр.
Съществува (Изберете * от вашата таблица, където bla ='blabla');
получавате вярно/невярно в момента, едно попадение е намерено/съпоставено . -
В този случай
IN
вид заема позицията наCount(*)
за да изберете ВСИЧКИ съвпадащи редове въз основа наWHERE
защото сравнява всички стойности.
Но не забравяйте и това:
СЪЩЕСТВУВА
изпълнява се с висока скорост срещуIN
:когато резултатите от подзаявката са много големи.IN
изпреварваEXISTS
:когато резултатите от подзаявката са много малки.
Препратка към за повече подробности: