यह लेकिन स्पष्ट है कि एमएस Sql सर्वर शॉर्ट सर्किट सिद्धांत का समर्थन करता है, अनावश्यक चेकिंग से बचने के प्रदर्शन में सुधार करने के लिए है,
सहायक उदाहरण:
SELECT 'TEST'
WHERE 1 = 'A'
SELECT 'TEST'
WHERE 1 = 1 OR 1 = 'A'
यहाँ, पहला उदाहरण त्रुटि में परिणाम होगा ' वर्चर मान 'ए' को डेटा प्रकार int में परिवर्तित करते समय रूपांतरण विफल रहा। '
जबकि दूसरी स्थिति आसानी से 1 = 1 के रूप में सत्य के रूप में मूल्यांकन करती है और इस प्रकार दूसरी स्थिति बिल्कुल नहीं चलती है।
इसके अलावा अधिक
SELECT 'TEST'
WHERE 1 = 0 OR 1 = 'A'
यहाँ
पहली शर्त गलत पर मूल्यांकन करेगा और इसलिए डीबीएमएस दूसरी शर्त के लिए जाना होगा और फिर आप ऊपर के उदाहरण में के रूप में रूपांतरण की त्रुटि मिल जाएगा।
नोट: मैं सिर्फ महसूस करने के लिए मौसम हालत निष्पादित किया जाता है या शॉर्ट सर्किट त्रुटि में क्वेरी परिणामों हालत फांसी संक्षिप्त-सर्किट अन्यथा अर्थ है कि अगर गलत हालत में लिखा था।
इसे आसानी से समझा
पर विचार करें,
WHERE 1 = 1 OR 2 = 2
के रूप में पहली शर्त सही के लिए मूल्यांकन किया जा रहा है, अपनी दूसरी स्थिति का मूल्यांकन करने अर्थहीन क्योंकि में जो कुछ भी मूल्य परिणाम को प्रभावित नहीं करेगा उसके मूल्यांकन बिलकुल भी, इसलिए अनावश्यक स्थिति की जांच या मूल्यांकन छोड़कर क्वेरी निष्पादन समय को बचाने के लिए एसक्यूएल सर्वर के लिए इसका अच्छा अवसर है।
के मामले में
"या" के रूप में दूसरों के मूल्यांकन के बिना सच के लिए मूल्यांकन अगर पहली शर्त सही को से जुड़े हुए पूरी श्रृंखला मूल्यांकन किया जाता है "या" माना जाएगा।
condition1 OR condition2 OR ..... OR conditionN
यदि स्थिति 1 का मूल्यांकन सही है, तो शर्तों तक सभी शर्तों को आराम दें, एन छोड़ दिया जाएगा। सामान्य TRUE के निर्धारण पर सामान्यीकृत शब्दों में, या अन्य सभी शर्तों को छोड़ दिया जाएगा।
दूसरी शर्त
WHERE 1 = 0 AND 1 = 1
के रूप में पहली शर्त को evalutated हो रही है पर विचार करें गलत अपने तो फिर से, क्योंकि इसके मूल्यांकन जो कुछ भी मूल्य में बिल्कुल परिणाम को प्रभावित नहीं करेगा दूसरी स्थिति का मूल्यांकन करने अर्थहीन अनावश्यक स्थिति की जांच या मूल्यांकन छोड़कर क्वेरी निष्पादन समय को बचाने के लिए एसक्यूएल सर्वर के लिए इसका अच्छा अवसर।
के मामले में
"और" अगर पहली शर्त गलत को "और" के साथ जुड़े हुए पूरी श्रृंखला मूल्यांकन किया जाता है के रूप में दूसरों के मूल्यांकन के बिना असत्य के लिए मूल्यांकन पर विचार किया जाएगा।
condition1 AND condition2 AND ..... conditionN
अगर CONDITION1 गलत लिए मूल्यांकन किया जाता है, को छोड़ दिया हो जाएगा conditionN तक शर्तों के सभी आराम। सामान्य FALSE के निर्धारण पर सामान्यीकृत शब्दों में, और से जुड़ी सभी अन्य स्थितियों को छोड़ दिया जाएगा।
वजह, एक बुद्धिमान प्रोग्रामर हमेशा इस तरह से शर्तों की श्रृंखला कार्यक्रम चाहिए था कि कम महंगी या सबसे नष्ट शर्त, पहले का मूल्यांकन या इस तरह से कि लघु सर्किट
के अधिकतम लाभ लग सकता हालत की व्यवस्था हो जाता है
धन्यवाद और सादर,
Rk_Hirpara
वहाँ ** कोई गारंटी नहीं है जो भी पर है ** कैसे और जो एक 'OR' हालत के कुछ हिस्सों पहले मूल्यांकन किया जाता है (या एक टी सभी)। टी-एसक्यूएल ** नहीं ** इस तरह सी # की तरह है। आप ** बूलियन शॉर्ट-सर्किटिंग पर भरोसा नहीं कर सकते हैं। –
'क्यों? 1 = 1 और @ आईडी = 'x' सत्य है '- यह ** या ** वास्तव में, ** और ** नहीं है। –
यहां, इस INSERT @tempTable (आईडी) मान (1) में, INTO गुम है। – vijay