यह जो भी सोचता है वह सबसे अच्छा काम करेगा।
अब यह कार्यात्मक रूप से आलसी है, जो महत्वपूर्ण बात है। जैसे यदि col1
एक varchar
जो हमेशा एक संख्या में शामिल होंगे जब col2
, रिक्त है तो है
isnull(col2, cast(col1 as int))
काम करेगा।
हालांकि, यह निर्दिष्ट नहीं किया है कि क्या यह शून्य की जांच के साथ पहले या एक साथ कलाकारों की कोशिश और त्रुटि खाने अगर col2
रिक्त नहीं है जाएगा, या यदि केवल यही सब पर अगर col2
रिक्त है कलाकारों की कोशिश करेंगे।
कम से कम, हम उम्मीद करते हैं कि यह किसी भी मामले में col1
प्राप्त करेगी क्योंकि 2 मान प्राप्त करने वाली तालिका का एक स्कैन दो स्कैन से प्रत्येक को प्राप्त करने वाला तेज़ होगा।
समान SQL आदेशों को बहुत अलग तरीकों से निष्पादित किया जा सकता है, क्योंकि हमारे द्वारा दिए गए निर्देश इंडेक्स और तालिकाओं के आंकड़ों के आधार पर निम्न-स्तर के संचालन में परिवर्तित हो जाते हैं।
इसी कारण से, प्रदर्शन के संदर्भ में, जवाब "जब ऐसा लगता है कि यह एक अच्छा विचार होगा, अन्यथा यह नहीं है"।
मनाए गए व्यवहार के मामले में, यह आलसी है।
संपादित करें: माइकल एरिक्सन के उत्तर से पता चलता है कि ऐसे मामले हैं जो आलसी होने के कारण वास्तव में त्रुटि हो सकती हैं। मैं प्रदर्शन प्रभाव के संदर्भ में यहां अपने उत्तर से चिपके रहूंगा, लेकिन कम से कम कुछ मामलों में शुद्धता प्रभाव के मामले में उनका महत्वपूर्ण है।
स्रोत
2012-08-31 17:06:53
आप अपने फ़ंक्शन में 'प्रिंटर' कथन जोड़ सकते हैं और अपने लिए खोज सकते हैं। –
@ जेरेटमेयर मैंने अपने बचपन के समय में प्रोग्रामिंग सीखने के लिए उस तकनीक का उपयोग किया, लेकिन यह आजकल लागू नहीं होता है क्योंकि आप नहीं जानते कि कार्यान्वयन विवरण क्या है और दस्तावेज व्यवहार क्या है। सीखना सामान कठिन हो रहा है :(बस कह रहा है ... –
@ जेरेटमेयर, 'प्रिंटर' udf में स्वीकार्य नहीं है। – Kash