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

क्या एक दृश्य एक साधारण क्वेरी से तेज है?

हां , विचार कर सकते हैं एक क्लस्टर इंडेक्स असाइन किया गया है और, जब वे ऐसा करते हैं, तो वे अस्थायी परिणाम संग्रहीत करेंगे जो परिणामी प्रश्नों को गति दे सकते हैं।

Microsoft का स्वयं का दस्तावेज़ीकरण यह बहुत स्पष्ट करता है कि दृश्य प्रदर्शन में सुधार कर सकते हैं।

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

मुझे सीधे दस्तावेज़ीकरण पर जाने दें:

<ब्लॉककोट>

दृश्य पर एक अद्वितीय क्लस्टर इंडेक्स बनाए जाने के बाद, दृश्य का परिणाम सेट तुरंत भौतिक हो जाता है और डेटाबेस में भौतिक भंडारण में बना रहता है, निष्पादन समय पर इस महंगे ऑपरेशन को करने के ऊपरी हिस्से को बचाता है।

दूसरा, ये अनुक्रमित दृश्य काम कर सकते हैं तब भी जब उन्हें किसी अन्य क्वेरी द्वारा सीधे संदर्भित नहीं किया जाता है अनुकूलक उपयुक्त होने पर तालिका संदर्भ के स्थान पर उनका उपयोग करेगा।

फिर से, दस्तावेज़ीकरण:

<ब्लॉककोट>

अनुक्रमित दृश्य का उपयोग क्वेरी निष्पादन में दो तरह से किया जा सकता है। क्वेरी सीधे अनुक्रमित दृश्य को संदर्भित कर सकती है, या, अधिक महत्वपूर्ण बात, क्वेरी ऑप्टिमाइज़र दृश्य का चयन कर सकता है यदि यह निर्धारित करता है कि दृश्य को सबसे कम लागत वाली क्वेरी योजना में कुछ या सभी क्वेरी के लिए प्रतिस्थापित किया जा सकता है। दूसरे मामले में, अंतर्निहित तालिकाओं और उनके सामान्य अनुक्रमितों के बजाय अनुक्रमित दृश्य का उपयोग किया जाता है। क्वेरी निष्पादन के दौरान क्वेरी ऑप्टिमाइज़र का उपयोग करने के लिए दृश्य को क्वेरी में संदर्भित करने की आवश्यकता नहीं है। यह मौजूदा अनुप्रयोगों को उन अनुप्रयोगों को बदले बिना नव निर्मित अनुक्रमित दृश्यों से लाभ उठाने की अनुमति देता है।

यह दस्तावेज़ीकरण, साथ ही प्रदर्शन सुधार प्रदर्शित करने वाले चार्ट, यहां देखे जा सकते हैं।

अपडेट 2: उत्तर की इस आधार पर आलोचना की गई है कि यह "सूचकांक" है जो प्रदर्शन लाभ प्रदान करता है, न कि "दृश्य"। हालांकि, इसका आसानी से खंडन किया जाता है।

मान लीजिए कि हम एक छोटे से देश में एक सॉफ्टवेयर कंपनी हैं; मैं एक उदाहरण के रूप में लिथुआनिया का उपयोग करूंगा। हम दुनिया भर में सॉफ़्टवेयर बेचते हैं और अपने रिकॉर्ड SQL सर्वर डेटाबेस में रखते हैं। हम बहुत सफल हैं और इसलिए, कुछ वर्षों में, हमारे पास 1,000,000+ रिकॉर्ड हैं। हालांकि, हमें अक्सर कर उद्देश्यों के लिए बिक्री की रिपोर्ट करने की आवश्यकता होती है और हम पाते हैं कि हमने अपने देश में अपने सॉफ़्टवेयर की केवल 100 प्रतियां बेची हैं। केवल लिथुआनियाई अभिलेखों का एक अनुक्रमित दृश्य बनाकर, हमें एमएस दस्तावेज़ीकरण में वर्णित अनुक्रमित कैश में रिकॉर्ड रखने की आवश्यकता होती है। जब हम 2008 में लिथुआनियाई बिक्री के लिए अपनी रिपोर्ट चलाते हैं, तो हमारी क्वेरी केवल 7 की गहराई के साथ एक अनुक्रमणिका के माध्यम से खोजेगी (कुछ अप्रयुक्त पत्तियों के साथ लॉग 2 (100)। अगर हम VIEW के बिना भी ऐसा ही करते हैं और केवल तालिका में एक इंडेक्स पर निर्भर होते हैं, तो हमें 21 की खोज गहराई के साथ एक इंडेक्स ट्री को पार करना होगा!

स्पष्ट रूप से, व्यू ही हमें केवल इंडेक्स के सरल उपयोग पर एक प्रदर्शन लाभ (3x) प्रदान करेगा। मैंने वास्तविक दुनिया के उदाहरण का उपयोग करने की कोशिश की है लेकिन आप देखेंगे कि लिथुआनियाई बिक्री की एक साधारण सूची हमें और भी अधिक लाभ देगी।

ध्यान दें कि मैं अपने उदाहरण के लिए सीधे बी-पेड़ का उपयोग कर रहा हूं। जबकि मैं काफी हद तक निश्चित हूं कि SQL सर्वर बी-पेड़ के कुछ प्रकार का उपयोग करता है, मुझे विवरण नहीं पता है। बहरहाल, बात कायम है।

अपडेट 3: यह प्रश्न सामने आया है कि क्या अनुक्रमित दृश्य केवल अंतर्निहित तालिका पर रखे गए सूचकांक का उपयोग करता है। इसका अर्थ है, पैराफ्रेश करने के लिए:"एक अनुक्रमित दृश्य एक मानक सूचकांक के बराबर है और यह एक दृश्य के लिए कुछ भी नया या अद्वितीय नहीं प्रदान करता है।" यदि यह सच था, तो निश्चित रूप से, उपरोक्त विश्लेषण गलत होगा! मुझे Microsoft दस्तावेज़ से एक उद्धरण प्रदान करने दें जो प्रदर्शित करता है कि मुझे क्यों लगता है कि यह आलोचना मान्य या सत्य नहीं है:

<ब्लॉककोट>

क्वेरी प्रदर्शन को बेहतर बनाने के लिए अनुक्रमणिका का उपयोग करना कोई नई अवधारणा नहीं है; हालांकि, अनुक्रमित दृश्य अतिरिक्त प्रदर्शन लाभ प्रदान करते हैं जिन्हें मानक अनुक्रमणिका का उपयोग करके प्राप्त नहीं किया जा सकता है।

भौतिक भंडारण में डेटा की दृढ़ता और दृश्यों पर सूचकांक कैसे बनाए जाते हैं, इसके बारे में दस्तावेज़ीकरण में अन्य जानकारी के साथ, मुझे लगता है कि यह कहना सुरक्षित है कि एक अनुक्रमित दृश्य नहीं है केवल एक कैश्ड SQL चयन जो मुख्य तालिका पर परिभाषित अनुक्रमणिका का उपयोग करने के लिए होता है। इस प्रकार, मैं इस उत्तर पर कायम हूं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डेटाबेस जो> 500 मिलियन पंक्तियों को संभाल सकता है

  2. T-SQL का उपयोग करके लिंक किए गए सर्वर विकल्पों को कैसे संपादित करें

  3. PHP का उपयोग कर SQL सर्वर में स्ट्रिंग्स से कैसे बचें?

  4. SQL सर्वर 2014 वृद्धिशील सांख्यिकी

  5. SAP IQ को SQL सर्वर से कनेक्ट करें