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

Popular posts from this blog

c# - ASP.NET MVC - Attaching an entity of type 'MODELNAME' failed because another entity of the same type already has the same primary key value -

jasper reports - How to center align barcode using jasperreports and barcode4j -

django - CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False -