indexing - If MySQL's InnoDB PRIMARY columns are automatically indexed, why is the index length reported as zero? -
यह मेरा MySQL InnoDB डेटाबेस है ध्यान दें कि तालिका दिन
अनुक्रमणिका की लंबाई जैसा कि
0 की रिपोर्ट करता है।
यह तालिका डेटा, योजना और अनुक्रमित है:
जैसा कि आप देख सकते हैं, तालिका में
प्राथमिक कॉलम परिभाषित है । यह अनुक्रमित किया जाना चाहिए, है ना? इसलिए एक निश्चित सूचक लंबाई होना चाहिए।
हालांकि, जब मैं वास्तव में
INDEX कॉलम को जोड़ता हूं, जैसे कि:
तालिका अचानक एक निश्चित
अनुक्रमणिका लंबाई की रिपोर्ट करती है, जैसा कि हो सकता है यहां देखा गया:
तो मुझे आश्चर्य है : क्या हो रहा है? सूचकांक लंबाई वास्तव में क्या है और प्राथमिक कैलेंडर को इन्हें क्यों अनुक्रमित नहीं किया जाता है?
इनओडीबी प्राथमिक कुंजी के आधार पर तालिका पंक्तियों को संग्रहीत करता है। इसलिए, data_length प्राथमिक कुंजी द्वारा कब्जा किए गए पृष्ठों के आकार को दिखाता है।
index_length माध्यमिक (गैर-प्राथमिक) द्वारा कब्जा किए गए पृष्ठों के आकार को दिखाता है अनुक्रमित।
अपनी टिप्पणी फिर से करें:
हां, इस तालिका में अनावश्यक है ताकि आपकी प्राथमिक कुंजी के पहले स्तंभ पर एक अतिरिक्त अनुक्रमणिका बना सके। MySQL आपको ऐसा कोई अतिरेक इंडेक्स बनाने से को रोकने नहीं करता है क्योंकि यह विश्वास करता है कि आप जानते हैं कि आप क्या कर रहे हैं : -)
आप एक उपकरण का उपयोग कर सकते हैं जैसे डुप्लिकेट अनुक्रमित के लिए अपने मेटाडेटा का विश्लेषण करना। इस तरह के एक मामले में मुझे डुप्लिकेट इंडेक्सस के कारण 400GB बर्बाद जगह मिली!
Comments
Post a Comment