Мені цікаво, що з наведеного нижче було б більш ефективним?
Я завжди був обережним щодо використання, IN
тому що я вважаю, що SQL Server перетворює набір результатів у велику IF
заяву. Для великого набору результатів це може призвести до низької ефективності. Що стосується невеликих наборів результатів, я не впевнений, що це є кращим. Чи не EXISTS
буде більш ефективним для великих наборів результатів ?
WHERE EXISTS (SELECT * FROM Base WHERE bx.BoxID = Base.BoxID AND [Rank] = 2)
vs.
WHERE bx.BoxID IN (SELECT BoxID FROM Base WHERE [Rank = 2])
select 1 from Base...
зробити, where exists
оскільки ти насправді не переймаєшся результатами, просто такий ряд насправді існує.