और इसलिए प्रदर्शन ट्यूनिंग और अनुक्रमण रणनीतियों की कला में प्रवेश करता है ...
सुझाए गए स्तंभों को शामिल करने के लिए मौजूदा सूचकांक परिभाषा में संशोधन करना मेरे लिए तर्कसंगत लगता है
मैं आपकी बोली लेने जा रहा हूं और तीसरी इंडेक्स परिभाषा लिखूंगा:
create index [idx_index3]
on [table1] (col1, col2, col3)
include (col4, col5, col6....);
वह CREATE INDEX
कथन होना चाहिए जो आपके उद्धृत कथन से मेल खाता हो।
यह बहुत अच्छी तरह से एक विवेकपूर्ण समाधान हो सकता है, लेकिन यह निर्भर करता है । यहाँ कुछ उदाहरण हैं जब मैं कहता हूं कि यह निर्भर करता है।
यदि आपके पास एक सामान्य कार्यभार है जिसमें अधिकतर इस तरह के प्रश्न होते हैं:
select col1, col2, col3
from table1
where col1 = 1
and col2 = 2
and col3 = 3;
तब आपका idx_index1
सूचकांक ठोस होगा। पूरी तरह से संकीर्ण, यह एक सूचकांक है जो उस क्वेरी को किसी भी बाहरी डेटा के साथ संतुष्ट नहीं करता है (क्लस्टर इंडेक्स परिभाषा को ध्यान में नहीं रखते हुए, यदि एक बिल्कुल भी)।
लेकिन अगर आपके पास वर्कलोड है जिसमें मुख्य रूप से निम्नलिखित जैसे प्रश्न शामिल हैं:
select co11, col2, col3, col4, col5
from table1
where col1 = 1
and col2 = 2;
तब idx_index2
समझदारी होगी, क्योंकि इसे एक कवरिंग इंडेक्स कहा जाता है जो क्लस्टर्ड इंडेक्स (या आरआईडी लुकअप हीप) को वापस देखने के लिए एक महत्वपूर्ण लुकअप की आवश्यकता को रोकता है। यह गैर-अनुक्रमित सूचकांक परिभाषा केवल उन सभी डेटा को शामिल करेगी जो क्वेरी की आवश्यकता है।
आपकी सिफारिश के साथ, यह निम्नलिखित की तरह एक प्रश्न के लिए अच्छी तरह से अनुकूल होगा:
select co11, col2, col3, col4, col5
from table1
where col1 = 1
and col2 = 2
and col3 = 3;
आपकी idx_index3
सिफारिश एक कवरिंग इंडेक्स होगी जो उपरोक्त क्वेरी के लिए खोज मानदंडों को संतुष्ट करती है।
मैं जिस बिंदु पर जाने की कोशिश कर रहा हूं, वह अलग-थलग है, इस तरह से हम निश्चित रूप से इसका जवाब नहीं दे सकते हैं। यह सब इस बात पर निर्भर करता है कि आम और लगातार काम का बोझ क्या है। बेशक, आप प्रत्येक नमूना क्वेरी प्रकार को संभालने के लिए हमेशा इन तीनों अनुक्रमितों को परिभाषित कर सकते हैं, लेकिन फिर सवाल में आता है कि रखरखाव के लिए इन सूचकांक को अद्यतन रखने की आवश्यकता होगी (विचार करें: INSERTs, अद्यतन, DELETEs)। यह इंडेक्स का ओवरहेड है।
आपको वर्कलोड को विच्छेदित करने और मूल्यांकन करने की आवश्यकता है, और यह निर्धारित करें कि लाभ कहाँ सबसे अच्छा होगा। यदि पहली नमूना क्वेरी एक सेकंड के दर्जनों बार निष्पादित होने तक सबसे आम है, और तीसरे नमूना क्वेरी की तरह एक बहुत ही अनजान क्वेरी है, तो यह सूचकांक के पत्ती स्तर के पन्नों को ब्लोट के साथ समझ में नहीं आएगा। INCLUDE
नॉनवेज कॉलम। यह सब आपके कार्यभार पर निर्भर करता है।
यदि आप विवेकपूर्ण अनुक्रमण रणनीतियों को समझते हैं, और आप अपने सामान्य कार्यभार को समझते हैं, तो उन दोनों को लागू करने से आप क्या कर पाएंगे, जो आपके लिए सबसे अच्छा मार्ग है।