ฉันสงสัยว่าข้อใดต่อไปนี้จะมีประสิทธิภาพมากกว่ากัน
ฉันมักจะระมัดระวังในการใช้IN
เพราะฉันเชื่อว่า SQL Server จะเปลี่ยนผลลัพธ์ที่กำหนดให้เป็นIF
คำสั่งที่ยิ่งใหญ่ สำหรับชุดผลลัพธ์ขนาดใหญ่อาจส่งผลให้มีประสิทธิภาพต่ำ สำหรับชุดผลลัพธ์ขนาดเล็กฉันไม่แน่ใจว่าควรเลือกอย่างใดอย่างหนึ่ง สำหรับชุดผลลัพธ์ขนาดใหญ่จะไม่มีEXISTS
ประสิทธิภาพมากกว่านี้หรือ
WHERE EXISTS (SELECT * FROM Base WHERE bx.BoxID = Base.BoxID AND [Rank] = 2)
เมื่อเทียบกับ
WHERE bx.BoxID IN (SELECT BoxID FROM Base WHERE [Rank = 2])
select 1 from Base...
ในของคุณwhere exists
เนื่องจากคุณไม่ดูแลจริงเกี่ยวกับผลเพียงว่าแถวที่มีอยู่จริง