आम तौर पर, चुनना स्केलर फ़ंक्शन के परिणाम से अधिक नुकसान नहीं होगा, लेकिन फ़िल्टरिंग इसके द्वारा आसानी से सैकड़ों सेकंड खर्च हो सकते हैं (जरूरी नहीं कि हालांकि)।
यदि आपको स्केलर फ़ंक्शन परिणाम द्वारा फ़िल्टर करने की आवश्यकता है (WHERE col = dbo.scalar_function()
), यह अक्सर इसके बजाय एक इनलाइन तालिका-मूल्यवान फ़ंक्शन बनाने में मदद करता है। यह परिणाम तालिका की एकमात्र पंक्ति के रूप में अपना मान लौटाएगा। फिर आप inner join
करेंगे फ़ंक्शन परिणाम के साथ, लौटाए गए मान द्वारा प्रभावी ढंग से फ़िल्टर करना। यह काम करता है क्योंकि SQL सर्वर हमेशा इनलाइन तालिका-मूल्यवान कार्यों को खोलने और उन्हें कॉलिंग क्वेरी में इनलाइन करने में सक्षम होता है।
ध्यान दें कि यदि फ़ंक्शन एक बहु-चरण वाला है तो यह ट्रिक काम नहीं करेगी। ये घाव नहीं हो सकते।