เป็นที่ชัดเจนว่าเซิร์ฟเวอร์ MS Sql สนับสนุนทฤษฎี Short circuit เพื่อปรับปรุงประสิทธิภาพโดยหลีกเลี่ยงการตรวจสอบที่ไม่จำเป็น
ตัวอย่างการสนับสนุน:
SELECT 'TEST'
WHERE 1 = 'A'
SELECT 'TEST'
WHERE 1 = 1 OR 1 = 'A'
ตัวอย่างแรกจะส่งผลให้เกิดข้อผิดพลาด 'การแปลงล้มเหลวเมื่อแปลงค่า varchar' A 'เป็นประเภทข้อมูล int'
ในขณะที่สองทำงานได้อย่างง่ายดายตามเงื่อนไข 1 = 1 ประเมินเป็น TRUE และทำให้สภาพที่สองไม่ได้ทำงานเลย
เพิ่มเติมอีก
SELECT 'TEST'
WHERE 1 = 0 OR 1 = 'A'
ที่นี่เงื่อนไขแรกจะประเมินเป็นเท็จและด้วยเหตุนี้ DBMS จะไปสำหรับเงื่อนไขที่สองและอีกครั้งคุณจะได้รับข้อผิดพลาดของการแปลงตามตัวอย่างข้างต้น
หมายเหตุ: ฉันสูญเสียเงื่อนไขความผิดพลาดเพียงเพื่อปรับปรุงสภาพอากาศที่ดำเนินการหรือสั้น - วงจรหากผลการค้นหาในข้อผิดพลาดหมายถึงเงื่อนไขอื่น ๆ ที่สั้น - วงจรอื่น ๆ
คำอธิบายอย่างง่าย
พิจารณา,
WHERE 1 = 1 OR 2 = 2
เนื่องจากเงื่อนไขแรกได้รับการประเมินเป็นTRUEมันไม่มีความหมายในการประเมินเงื่อนไขที่สองเนื่องจากการประเมินในสิ่งที่ค่าจะไม่ส่งผลกระทบต่อผลทั้งหมดดังนั้นจึงเป็นโอกาสที่ดีสำหรับ Sql Server เพื่อประหยัดเวลาดำเนินการ Query โดยข้ามการตรวจสอบเงื่อนไขที่ไม่จำเป็น .
ในกรณีของ"OR"หากเงื่อนไขแรกถูกประเมินเป็นTRUEโซ่ทั้งหมดที่เชื่อมต่อด้วย"OR"จะถือว่าเป็นการประเมินว่าเป็นจริงโดยไม่ต้องประเมินผู้อื่น
condition1 OR condition2 OR ..... OR conditionN
ถ้า condition1 ถูกประเมินเป็น true ให้พักเงื่อนไขทั้งหมดจนกว่า conditionN จะถูกข้าม ในคำทั่วไปที่กำหนดTRUEแรกเงื่อนไขอื่น ๆ ทั้งหมดที่เชื่อมโยงโดย OR จะถูกข้าม
พิจารณาเงื่อนไขที่สอง
WHERE 1 = 0 AND 1 = 1
เนื่องจากเงื่อนไขแรกได้รับการประเมินเป็นFALSEโดยไม่มีความหมายในการประเมินเงื่อนไขที่สองเนื่องจากการประเมินในสิ่งที่ค่าจะไม่ส่งผลกระทบต่อผลลัพธ์เลยดังนั้นโอกาสที่ดีสำหรับ Sql Server ที่จะประหยัดเวลาดำเนินการ Query โดยการข้ามการตรวจสอบเงื่อนไขที่ไม่จำเป็น .
ในกรณีของ"AND"ถ้าเงื่อนไขแรกถูกประเมินเป็นFALSEโซ่ทั้งหมดที่เชื่อมต่อกับ"AND"จะถือว่าเป็นการประเมินเป็น FALSE โดยไม่ต้องประเมินผู้อื่น
condition1 AND condition2 AND ..... conditionN
ถ้า condition1 ถูกประเมินเป็นFALSEให้พักเงื่อนไขทั้งหมดจนกว่าconditionNจะถูกข้าม ในคำทั่วไปที่กำหนดFALSEแรกเงื่อนไขอื่น ๆ ทั้งหมดที่เชื่อมโยงโดยและจะถูกข้าม
ดังนั้นนักเขียนโปรแกรมที่ชาญฉลาดควรใช้โปรแกรมโซ่ของเงื่อนไขในวิธีการที่ได้รับประโยชน์สูงสุดนั้นน้อยกว่าสภาพแวดล้อมที่มีราคาแพงหรือกำจัดมากที่สุดได้รับการประเมินเป็นครั้งแรก