Saya penasaran manakah dari berikut ini yang akan lebih efisien?
Saya selalu berhati-hati dalam menggunakan IN
karena saya percaya SQL Server mengubah hasil yang ditetapkan menjadi IF
pernyataan besar . Untuk kumpulan hasil yang besar, ini dapat mengakibatkan kinerja yang buruk. Untuk kumpulan hasil kecil, saya tidak yakin mana yang lebih disukai. Untuk kumpulan hasil yang besar, bukankah EXISTS
lebih efisien?
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...
di Anda where exists
karena Anda tidak benar-benar peduli tentang hasil, hanya saja berturut-turut benar-benar ada.