2010-08-02 15 views
7

हैलो एसक्यूएल सर्वर इंजन विशेषज्ञ; कृपया हमारे साथ अपनी अंतर्दृष्टि साझा करें ...एसक्यूएल सर्वर प्रदर्शन: गैर-क्लस्टर्ड इंडेक्स + कॉलम बनाम क्लस्टर्ड इंडेक्स - समकक्ष?

जैसा कि मैं इसे समझता हूं, गैर-क्लस्टर्ड इंडेक्स पर कॉलम शामिल करें अतिरिक्त, गैर-कुंजी डेटा इंडेक्स पृष्ठों के साथ संग्रहीत करने की अनुमति देता है।

डिस्क पर डेटा तक पहुंचने के लिए इंजन को पुनर्प्राप्ति में 1 कम कदम के कारण बस एक क्लस्टर्ड इंडेक्स को गैर-क्लस्टर इंडेक्स पर प्रदर्शन लाभों के बारे में अच्छी तरह से पता है।

हालांकि, चूंकि कॉलम गैर-क्लस्टर्ड इंडेक्स में रहते हैं, तो निम्नलिखित क्वेरी को अनिवार्य रूप से परिदृश्य 1 और 2 में समान प्रदर्शन होने की उम्मीद की जा सकती है क्योंकि सभी कॉलम इंडेक्स पृष्ठों से पहले कभी भी परिदृश्य 2 में पुनर्प्राप्त किए जा सकते हैं तालिका डेटा पृष्ठों का सहारा ले रहे हैं?

क्वेरी के

SELECT A, B, C FROM TBL ORDER BY A 

SCENARIO 1

CREATE CLUSTERED INDEX IX1 ON TBL (A, B, C); 

SCENARIO 2

CREATED NONCLUSTERED INDEX IX1 ON TBL (A) INCLUDE (B, C); 
+0

जब आप इंडेक्स सेटअप के बीच स्विच करते हैं तो वास्तविक क्वेरी योजना क्या कहती है? –

+0

यह उस तालिका को मारने वाले समग्र क्वेरी वर्कलोड पर निर्भर करेगा। –

+0

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

उत्तर

3

इस उदाहरण के लिए आप कर सकते हैं वास्तविक गैर-क्लस्टर्ड इंडेक्स के साथ ly बेहतर प्रदर्शन प्राप्त करें। लेकिन, यह वास्तव में आपके द्वारा प्रदान की गई अतिरिक्त जानकारी पर निर्भर करता है। यहां कुछ विचार दिए गए हैं।

SQL सर्वर 8KB पृष्ठों में जानकारी संग्रहीत करता है; इसमें डेटा और इंडेक्स शामिल हैं। यदि आपकी तालिका में केवल कॉलम ए, बी और सी शामिल हैं, तो डेटा लगभग उसी डेटा पृष्ठों और गैर-क्लस्टर किए गए इंडेक्स पृष्ठों में संग्रहीत किया जाएगा। लेकिन, यदि आपके पास तालिका में अधिक कॉलम हैं, तो डेटा को और पृष्ठों की आवश्यकता होगी। सूचकांक पृष्ठों की संख्या कोई अलग नहीं होगी।

तो, आपकी क्वेरी आवश्यकताओं की तुलना में अधिक कॉलम वाली तालिका में, क्वेरी गैर-क्लस्टर कवर इंडेक्स (सभी कॉलम के साथ इंडेक्स) के साथ बेहतर काम करेगी। यह आपके इच्छित परिणामों को वापस करने के लिए कम पृष्ठों को संसाधित करने में सक्षम होगा।

बेशक, प्रदर्शन मतभेद तब तक नहीं देखे जा सकते जब तक आपको बहुत बड़ी संख्या में पंक्तियां न मिलें।

5

वास्तव में कवर के साथ एक गैर-क्लस्टर्ड इंडेक्स में कॉलम क्लस्टर इंडेक्स के समान भूमिका निभा सकते हैं। लागत अद्यतन समय पर है: अधिक कॉलम शामिल हैं इसका मतलब है कि अधिक तालिकाओं को अद्यतन किया जाना चाहिए जब आधार तालिका (क्लस्टर्ड इंडेक्स में) में एक स्तंभ कॉलम मान बदला जाता है। इसके अलावा, अधिक कॉलम के साथ, आकार का डेटा बढ़ता है: डेटाबेस बड़ा हो जाता है और यह रखरखाव संचालन को जटिल बना सकता है।

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

संबंधित मुद्दे