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

SQL सर्वर 2005 में यूनियन सभी प्रदर्शन

सुनिश्चित करें कि आपने प्रत्येक टेस्ट रन के बीच निष्पादन + डेटा कैश साफ़ कर दिया है।

उदा.

DBCC FREEPROCCACHE
DBCC DROPCLEANBUFFERS

यदि आप पहले यूनियन ऑल के साथ दौड़ते हैं, और फिर बाद में अलग-अलग 2 चयन चलाते हैं, तो डेटा पहले से ही मेमोरी बनाने के प्रदर्शन को बेहतर बनाने में कैश किया जाएगा (इसलिए यह गलत धारणा दे रहा है कि बाद का दृष्टिकोण तेज है जब यह नहीं हो सकता है)।

यदि आपने यूनियन का उपयोग किया है तो यह धीमा हो सकता है क्योंकि इसे एक DISTINCT लागू करना है, लेकिन यूनियन सभी को ऐसा करने की ज़रूरत नहीं है, इसलिए यह अलग नहीं होना चाहिए।

अपडेट करें:
कार्यान्वयन योजनाओं पर एक नज़र डालें और उनकी तुलना करें - देखें कि क्या कोई अंतर है। आप क्वेरी चलाने से पहले SSMS में "वास्तविक निष्पादन योजना शामिल करें" बटन पर क्लिक करके निष्पादन योजना देख सकते हैं

अपडेट 2:
दिए गए पूर्ण सीटीई के आधार पर, मुझे लगता है कि मैं उन्हें अनुकूलित करने पर विचार कर रहा हूं - मुझे नहीं लगता कि यूनियन ऑल वास्तव में समस्या है।

आईएमएचओ, कोशिश करने के लिए सबसे अच्छी बात यह है कि सीटीई के माध्यम से एक-एक करके काम करें और प्रत्येक को अलग-अलग अनुकूलित करने का प्रयास करें ताकि जब आप उन सभी को मुख्य क्वेरी में जोड़ दें, तो वे बेहतर प्रदर्शन करते हैं।

जैसे tDictionaryStreets के लिए, इसे कैसे आजमाएं:

SELECT DISTINCT
    r.KladrItemName AS RegionName,
        a.KladrItemName AS AreaName,
        c.KladrItemName AS CityName,
        sc.KladrItemName AS SubCityName,
        s.StreetName      
FROM StreetNames s
    JOIN tFoundStreets fs ON s.StreetName = fs.KladrItemName
    LEFT JOIN tFoundRegions r ON s.RegionName = r.KladrItemName
    LEFT JOIN tFoundAreas a ON s.AreaName = a.KladrItemName
    LEFT JOIN tFoundCities c ON s.CityName = c.KladrItemName
    LEFT JOIN tFoundSubCities sc ON s.SubCityName = scc.KladrItemName

प्रत्येक टेबल पर KladrItemName पर कम से कम एक इंडेक्स होना चाहिए। tDictionarySubCities को उसी तरह से जोड़ने का प्रयास करें।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर:एक FK बाधा छोड़ें, जो विदेशी कुंजी नहीं है

  2. (WHERE) शर्तों के साथ चयनित पंक्तियों से पिछली और अगली पंक्ति प्राप्त करें

  3. एक वर्ण स्ट्रिंग से अद्वितीय पहचानकर्ता में कनवर्ट करते समय रूपांतरण विफल रहा

  4. SQL सर्वर के साथ Lucene.Net कॉन्फ़िगर करें

  5. डेटाबेस पर लूपिंग करते समय असंगत कर्सर परिणाम