यह काफी अच्छी तरह से प्रलेखित है कि यूडीएफ एक समग्र धारावाहिक योजना को मजबूर करता है।
मुझे यकीन नहीं है कि यह सब अच्छी तरह से प्रलेखित है।
- एक स्केलर टी-एसक्यूएल फ़ंक्शन योजना में कहीं भी समानता को रोकता है।
- स्केलर सीएलआर फ़ंक्शन को समानांतर में निष्पादित किया जा सकता है, इसलिए जब तक यह डेटाबेस तक नहीं पहुंचता है।
- मल्टी-स्टेटमेंट टेबल-वैल्यू टी-एसक्यूएल फ़ंक्शन एक योजना में एक सीरियल ज़ोन को बाध्य करता है जो कहीं और समानता का उपयोग कर सकता है।
- इनलाइन टेबल-वैल्यू टी-एसक्यूएल फ़ंक्शन को एक दृश्य की तरह विस्तारित किया जाता है, इसलिए इसका कोई प्रत्यक्ष प्रभाव नहीं है।
एक समानांतर निष्पादन योजना और / या क्रेग फ्रीडमैन की समानांतर निष्पादन प्रस्तुति मजबूर करना देखें ।
यूडीएफ के बारे में दावा किया जा रहा है कि ब्लैक बॉक्स को कर्सर का उपयोग करना चाहिए।
ये दावे सही नहीं हैं।
यह समझाने के लिए अतिरिक्त बिंदु कि इंजन केवल यूडीएफ गणना चरण के बजाय पूरी योजना को सीरियल बनाने के लिए क्यों मजबूर करता है।
मेरी समझ यह है कि वर्तमान प्रतिबंध विशुद्ध रूप से कुछ कार्यान्वयन विवरणों का परिणाम हैं। समानता का उपयोग करके कार्यों को निष्पादित नहीं किया जा सकता है, इसका कोई मौलिक कारण नहीं है।
विशेष रूप से, टी-एसक्यूएल स्केलर फ़ंक्शन एक अलग टी-एसक्यूएल संदर्भ के अंदर निष्पादित होता है, जो सही संचालन, समन्वय और शटडाउन को जटिल करता है (विशेषकर एक त्रुटि के मामले में)।
समान रूप से, टेबल चर सामान्य रूप से समानांतर रीड (लेकिन लिखते नहीं) का समर्थन करते हैं, लेकिन टेबल-वैल्यू फ़ंक्शन द्वारा उजागर टेबल वेरिएबल कार्यान्वयन-विशिष्ट कारणों के लिए समानांतर रीड का समर्थन करने में सक्षम नहीं है। आधिकारिक उत्तर देने के लिए आपको स्रोत कोड एक्सेस (और विवरण साझा करने की स्वतंत्रता) के साथ किसी की आवश्यकता होगी, मुझे डर है।
समानांतर UDF के लिए समर्थन अनुरोध करने के लिए एक उचित सुविधा है?
बेशक, अगर आप एक मजबूत-पर्याप्त मामला बना सकते हैं। मेरा अपना लग रहा है कि काम शामिल व्यापक होगा, इसलिए अपने प्रस्ताव एक को पूरा करने के लिए होता है अत्यंत उच्च बार। उदाहरण के लिए, इनलाइन स्केलर फ़ंक्शंस प्रदान करने के लिए एक संबंधित (और बहुत सरल) अनुरोध का बहुत समर्थन है, लेकिन अब वर्षों के लिए इसे लागू नहीं किया गया है।
आप Microsoft पेपर पढ़ना पसंद कर सकते हैं:
... जो Microsoft SQL Server 2017 के बाद रिलीज़ में T-SQL स्केलर फ़ंक्शन प्रदर्शन समस्याओं को हल करने के लिए ले जाने के लिए Microsoft के दृष्टिकोण को रेखांकित करता है।
Froid का लक्ष्य डेवलपर्स को प्रदर्शन पर समझौता किए बिना UDFs और प्रक्रियाओं के अमूर्त उपयोग करने में सक्षम करना है। Froid एक लक्ष्य तकनीक का उपयोग करके इस लक्ष्य को प्राप्त करता है कि जब भी संभव हो, अनिवार्य संबंधपरक बीजीय रूपों में अनिवार्य रूप से रूपांतरित करने के लिए। संबंधात्मक अभिव्यक्तियों के रूप में अनिवार्य कोड के Froid मॉडल ब्लॉक, और व्यवस्थित रूप से उन्हें लागू ऑपरेटर का उपयोग करके एकल अभिव्यक्ति में जोड़ता है, जिससे क्वेरी ऑप्टिमाइज़र को कुशल सेट-ओरिएंटेड, समानांतर क्वेरी योजनाओं को चुनने में सक्षम किया जाता है ।
(जोर मेरा)
इनलाइन स्केलर टी-एसक्यूएल फ़ंक्शन अब SQL सर्वर 2019 में लागू किए गए हैं ।