Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

एक यूडीएफ एक सबक्वायरी से इतना धीमा क्यों है?

यूडीएफ क्वेरी ऑप्टिमाइज़र के लिए एक ब्लैक बॉक्स है इसलिए इसे प्रत्येक पंक्ति के लिए निष्पादित किया जाता है। आप पंक्ति-दर-पंक्ति कर्सर कर रहे हैं। किसी संपत्ति में प्रत्येक पंक्ति के लिए, किसी अन्य तालिका में तीन बार एक आईडी देखें। ऐसा तब होता है जब आप स्केलर या मल्टी-स्टेटमेंट यूडीएफ का उपयोग करते हैं (इन-लाइन यूडीएफ केवल मैक्रो होते हैं जो बाहरी क्वेरी में विस्तारित होते हैं)

समस्या पर कई लेखों में से एक है "स्केलर फ़ंक्शंस, इनलाइनिंग, और प्रदर्शन:एक उबाऊ पोस्ट के लिए एक मनोरंजक शीर्षक"।

उप-प्रश्नों को सहसंबद्ध करने और पंक्ति-दर-पंक्ति संचालन से बचने के लिए अनुकूलित किया जा सकता है।

आप वास्तव में यही चाहते हैं:

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 इस समस्या को ठीक करना शुरू करता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एसोसिएशन टेबल का सही नाम क्या है (कई-से-अनेक संबंध)

  2. SQL NVARCHAR और VARCHAR सीमाएं

  3. sql का उपयोग करके अल्फा और न्यूमेरिक को विभाजित करें

  4. पायथन का उपयोग कर विंडोज प्रमाणीकरण के साथ एमएस एसक्यूएल सर्वर से कनेक्ट करना?

  5. SQL सर्वर में स्ट्रिंग करने के लिए Concat फ़ील्ड मान