मैं एक प्रश्न है कि कुछ इस तरह करता है अनुकूलन करने के लिए कोशिश कर रहा हूँ:एसक्यूएलसेवर केस अभिव्यक्ति - शॉर्ट सर्किट मूल्यांकन?
SELECT
...
CASE WHEN (condition) THEN (expensive function call #1)
ELSE (expensive function call #2)
END
...
क्वेरी योजना पता चलता है कि के लिए भी ऐसे मामलों में जहां पंक्तियों की 100% जब खंड को पूरा करना, समय का एक बड़ा हिस्सा में खर्च किया जाता है ईएलएसई शाखा में परिणाम के लिए कॉल।
एकमात्र तरीका मैं इसे समझ सकता हूं यह मानना है कि SQLServer दोनों परिणामों का मूल्यांकन कर रहा है, फिर केवल WHEN स्थिति के मूल्यांकन के आधार पर एक का चयन कर रहा है, लेकिन मुझे कोई निश्चित संदर्भ नहीं मिल रहा है कि नहीं एक केस स्टेटमेंट के परिणाम सशर्त से पहले मूल्यांकन किया जाता है। क्या कोई मुझे संदर्भ में स्पष्टीकरण या इंगित कर सकता है?
मैं इसकी पुष्टि नहीं कर सकता, भले ही मैं एक महंगी फ़ंक्शन का प्रयास करता हूं जो एक विशाल तालिका से पूछताछ करता है। यदि मैं सीएएसई का पहला भाग सत्य होने के लिए 100% सेट करता हूं, तो मेरी क्वेरी में 5 सेकंड लगते हैं। यदि नहीं, लगभग 10 मिनट। SQL सर्वर का कौन सा संस्करण? – MartW