มีการแนะนำให้ฉันว่าการใช้คำสั่ง IF ใน t-SQL batches นั้นเป็นอันตรายต่อประสิทธิภาพ ฉันพยายามค้นหาคำยืนยันหรือตรวจสอบยืนยันนี้ ฉันใช้ SQL Server 2005 และ 2008
การยืนยันคือชุดที่มีดังต่อไปนี้: -
IF @parameter = 0
BEGIN
SELECT ... something
END
ELSE
BEGIN
SELECT ... something else
END
SQL Server ไม่สามารถใช้แผนการดำเนินการที่สร้างขึ้นใหม่ได้เนื่องจากการดำเนินการครั้งต่อไปอาจต้องใช้สาขาอื่น นี่หมายความว่า SQL Server จะกำจัดหนึ่งสาขาทั้งหมดจากแผนการดำเนินการตามพื้นฐานของการดำเนินการปัจจุบันซึ่งสามารถกำหนดสาขาที่ต้องการได้แล้ว นี่เป็นเรื่องจริงหรือ
นอกจากนี้จะเกิดอะไรขึ้นในกรณีนี้: -
IF EXISTS (SELECT ....)
BEGIN
SELECT ... something
END
ELSE
BEGIN
SELECT ... something else
END
ไม่สามารถระบุได้ล่วงหน้าว่าสาขาใดจะถูกดำเนินการ