यूडीएफ क्वेरी ऑप्टिमाइज़र के लिए एक ब्लैक बॉक्स है इसलिए इसे प्रत्येक पंक्ति के लिए निष्पादित किया जाता है। आप पंक्ति-दर-पंक्ति कर्सर कर रहे हैं। किसी संपत्ति में प्रत्येक पंक्ति के लिए, किसी अन्य तालिका में तीन बार एक आईडी देखें। ऐसा तब होता है जब आप स्केलर या मल्टी-स्टेटमेंट यूडीएफ का उपयोग करते हैं (इन-लाइन यूडीएफ केवल मैक्रो होते हैं जो बाहरी क्वेरी में विस्तारित होते हैं)
समस्या पर कई लेखों में से एक है "स्केलर फ़ंक्शंस, इनलाइनिंग, और प्रदर्शन:एक उबाऊ पोस्ट के लिए एक मनोरंजक शीर्षक"।
उप-प्रश्नों को सहसंबद्ध करने और पंक्ति-दर-पंक्ति संचालन से बचने के लिए अनुकूलित किया जा सकता है।
आप वास्तव में यही चाहते हैं:
SELECT
uc.id AS creator,
uu.id AS updater,
uo.id AS owner,
a.[name]
FROM
asset a
JOIN
user uc ON uc.user_pk = a.created_by
JOIN
user uu ON uu.user_pk = a.updated_by
JOIN
user uo ON uo.user_pk = a.owned_by
फरवरी 2019 अपडेट करें
SQL सर्वर 2019 इस समस्या को ठीक करना शुरू करता है।