मैं हाल ही में एक डेटाबेस मैं कहना है कि फार्म की थी में एक सूचकांक का सामना करना पड़ा में क्यों शामिल:उपयोग किसी SQL सूचकांक
CREATE INDEX [IX_Foo] ON [Foo]
(Id ASC)
INCLUDE
(SubId)
इस विशेष मामले में, प्रदर्शन समस्या यह है कि मैं का सामना कर रहा था (एक धीमी गति से चयन छानने आईडी और सबआईडी दोनों पर) को उप-कॉलम कॉलम को सीधे शामिल कॉलम के बजाय इंडेक्स में उचित रूप से स्थानांतरित करके तय किया जा सकता है।
यह मुझे सोच रहा है कि मुझे कॉलम के पीछे तर्क को समझ में नहीं आता है, जब आम तौर पर, वे केवल इंडेक्स का हिस्सा बन सकते हैं। यहां तक कि यदि मैं विशेष रूप से इंडेक्स में होने वाली वस्तुओं के बारे में विशेष रूप से परवाह नहीं करता हूं, तो भी शामिल होने के बजाय इंडेक्स में कॉलम होने का कोई नकारात्मक पक्ष है।
कुछ शोध के बाद, मुझे पता है कि इंडेक्स किए गए कॉलम (इंडेक्स की अधिकतम चौड़ाई, और कुछ कॉलम प्रकारों को 'छवि' जैसे अनुक्रमित नहीं किया जा सकता है) पर कई प्रतिबंध हैं। इन मामलों में मैं देख सकता हूं कि आपको इंडेक्स पेज डेटा में कॉलम शामिल करने के लिए मजबूर होना होगा।
एकमात्र चीज जो मैं सोच सकता हूं वह यह है कि यदि उप-आईडी पर अपडेट हैं, तो कॉलम शामिल होने पर पंक्ति को स्थानांतरित करने की आवश्यकता नहीं होगी (हालांकि सूचकांक में मान को बदलने की आवश्यकता होगी)। क्या कुछ और है जो मुझे याद आ रहा है?
मैं डेटाबेस में अन्य अनुक्रमणिका के माध्यम से जाने पर विचार कर रहा हूं और जहां संभव हो वहां सूचकांक में स्तंभों को स्थानांतरित करना शामिल है। क्या यह एक गलती होगी?
मैं मुख्य रूप से एमएस एसक्यूएल सर्वर में रूचि रखता हूं, लेकिन अन्य डीबी इंजनों की जानकारी भी स्वागत है।
मैं उस हिस्से को समझता हूं। असली सवाल आईडीआई और सबआईडी बनाम इंडेक्स और सब आईडी सहित आईडी पर इंडेक्स के बीच ट्रेडऑफ के बारे में है। – StarLite
@StarLIte: मेरी पोस्ट –
@marc_s के व्यापार लाभ की व्याख्या को 'INCLUDE' का एक अन्य लाभ यह है कि अद्यतन कॉलम को केवल प्रभावित करने वाले अपडेट सस्ता हैं क्योंकि इंडेक्स को परिवर्तनों के लिए पुनः व्यवस्थित करने की आवश्यकता नहीं है कॉलम शामिल –