मैं इस सवाल के कुछ जवाबों से असहमत हूं।
क्या ऐसी कोई चीज़ बहुत अधिक अनुक्रमित है?
बेशक। ऐसे अनुक्रमणिका न बनाएं, जो आपके किसी भी प्रश्न का उपयोग न करें। अनावश्यक इंडेक्स न बनाएं। पीटी-डुप्लीकेट-की-चेकर और पीटी-इंडेक्स-यूसेज जैसे टूल का उपयोग करें ताकि आपको उन इंडेक्स की खोज करने में मदद मिल सके जिनकी आपको आवश्यकता नहीं है।
सूचकांक क्या गति देगा?
- WHERE क्लॉज में स्थितियां खोजें।
- शर्तों में शामिल हों।
- ORDER BY के कुछ मामले।
- ग्रुप बाय के कुछ मामले।
- अद्वितीय बाधाओं।
- प्रमुख कुंजी बाधाओं।
- पूरा पाठ खोजें।
अन्य उत्तरों ने सलाह दी है कि INSERT / UPDATE / DELETE आपके पास जितने अधिक इंडेक्स हैं, उतने धीमे हैं। यह सच है, लेकिन इस बात पर विचार करें कि UPDATE और DELETE के कई उपयोगों में WHERE क्लॉज़ भी हैं और MySQL, UPDATE और DELETE में जॉइन का भी समर्थन है। अनुक्रमणिकाओं को अपडेट करने के ओवरहेड के लिए अनुक्रमणिका बनाने से अधिक इन प्रश्नों का लाभ हो सकता है।
इसके अलावा, InnoDB एक UPDATE या DELETE से प्रभावित पंक्तियों को लॉक करता है। वे इस रो-लेवल लॉकिंग को कहते हैं, लेकिन यह वास्तव में इंडेक्स-लेवल लॉकिंग है। यदि खोज को कम करने के लिए कोई इंडेक्स नहीं है, तो आप जिस विशिष्ट पंक्ति को बदल रहे हैं, उसकी तुलना में InnoDB को बहुत अधिक पंक्तियों को लॉक करना होगा। यह तालिका में सभी पंक्तियों को भी लॉक कर सकता है । ये ताले अन्य ग्राहकों द्वारा किए गए परिवर्तनों को अवरुद्ध करते हैं, भले ही वे तार्किक रूप से संघर्ष न करें।
सूचकांक जोड़ना कब अच्छा होगा?
यदि आप जानते हैं कि आपको एक क्वेरी चलाने की आवश्यकता है जो उपरोक्त मामलों में से एक में सूचकांक से लाभान्वित होगी।
सूचकांक जोड़ना कब एक बुरा विचार है?
यदि इंडेक्स किसी अन्य मौजूदा इंडेक्स का लेफ्ट-प्रीफिक्स है, या इंडेक्स को आपके द्वारा चलाए जाने वाले किसी भी प्रश्न की मदद नहीं करता है।
प्रो और कॉन मल्टी-इंडेक्स बनाम मल्टी-कॉलम इंडेक्स हैं?
कुछ मामलों में, MySQL इंडेक्स-मर्ज ऑप्टिमाइज़ेशन कर सकता है , और या तो इंडेक्स इंडेक्स खोजों से परिणामों को संघ या प्रतिच्छेद कर सकता है। लेकिन यह एक एकल सूचकांक को परिभाषित करने के लिए बेहतर प्रदर्शन देता है इसलिए सूचकांक-मर्ज करने की आवश्यकता नहीं है।
मेरे एक परामर्शदाता ग्राहक के लिए, मैंने कई-कई-कई टेबल पर एक मल्टी-कॉलम इंडेक्स को परिभाषित किया, जहाँ कोई इंडेक्स नहीं था, और 94 मिलियन के कारक द्वारा उनके ज्वाइन क्वेरी में सुधार किया!
सही अनुक्रमणिका डिज़ाइन करना एक जटिल प्रक्रिया है, प्रश्नों के आधार पर जिन्हें आपको अनुकूलित करने की आवश्यकता है । आपको अपडेट्स को धीमा करने से बचने के लिए "इंडेक्स सब कुछ" या "इंडेक्स नथिंग" जैसे व्यापक नियम नहीं बनाने चाहिए।
मेरी प्रस्तुति हाउ टू डिजाईन इंडेक्स, वास्तव में देखें ।