ฉันใช้ SQL Server 2008 R2 และฉันมีแบบสอบถามหลอก (SP) นี้:
select ...
from ...
WHERE @LinkMode IS NULL
AND (myColumn IN (...very long-running query...))
...
...
ปัญหาคือว่าแบบสอบถามใช้เวลานานมากในการดำเนินการ - แม้ว่าผมจะดำเนินการ SP @LinkMode=2
ด้วย
ดังที่คุณสังเกตเห็นเคียวรีที่รันนานควรถูกเรียกใช้งานต่อเมื่อ @LinkMode เป็นโมฆะซึ่งไม่ใช่กรณีที่นี่ ในกรณีของฉัน @LinkMode = 2!
อย่างไรก็ตามหากฉันเปลี่ยนเป็น:
select ...
from ...
WHERE 1=2
AND (myColumn IN (...very long time exeted query...))
...
...
เอสพีไม่ทำงานได้อย่างรวดเร็ว
ฉันเคยได้ยินมาก่อนแล้วว่าบางครั้งเครื่องมือเพิ่มประสิทธิภาพสามารถปรับลำดับของเกณฑ์ให้เหมาะสม
ดังนั้นฉันถาม:
แม้ว่าเครื่องมือเพิ่มประสิทธิภาพเลือกเส้นทางที่แตกต่างกันอะไรที่เร็วกว่าการตรวจสอบว่า
=null
? ผมหมายถึงผมคิดว่าการตรวจสอบว่าif a==null
เป็นมากทำงานได้เร็วกว่าแบบสอบถามยาวอื่น ...ฉันจะบังคับให้ SQL Server เรียกใช้แบบสอบถามตามที่ฉันเขียนไว้ (เรียงตามลำดับเดียวกัน) ได้อย่างไร