वास्तव में उत्तर देने के लिए यह देखना उपयोगी होगा कि क्या आपके पास पहले से मौजूद अनुक्रमणिकाएं हैं, लेकिन...
यह सब मान रहा है कि तालिका 'टी' मौजूद है और आपको एक अनुक्रमणिका जोड़ने की आवश्यकता है और आपके पास वर्तमान में आपकी प्राथमिक कुंजी पर केवल एक अनुक्रमणिका है या कोई अनुक्रमणिका नहीं है।
क्वेरी के लिए एक कवरिंग इंडेक्स आपकी आवश्यकताओं के लिए सर्वश्रेष्ठ प्रदर्शन देगा, लेकिन किसी भी इंडेक्स के साथ आप कुछ सम्मिलन गति का त्याग करते हैं। वह बलिदान कितना मायने रखता है यह आपके आवेदन के प्रोफाइल पर निर्भर करता है। यदि आप अधिकतर टेबल से पढ़ते हैं तो यह ज्यादा मायने नहीं रखता। यदि आपके पास केवल कुछ अनुक्रमणिकाएं हैं, तो एक मध्यम लेखन भार भी कोई मायने नहीं रखेगा। आपकी तालिकाओं के लिए सीमित संग्रहण स्थान भी चलन में आ सकता है ... आपको ट्रेडऑफ़ का अंतिम मूल्यांकन करने की आवश्यकता है और यदि यह ध्यान देने योग्य है। अच्छी बात यह है कि यह लगातार हिट है। आम तौर पर, एक इंडेक्स जोड़ने से आपके सम्मिलन को तेजी से धीमा नहीं किया जाता है, केवल रैखिक रूप से।
भले ही, सर्वश्रेष्ठ चयन प्रदर्शन के लिए आपके विकल्प यहां दिए गए हैं:
- यदि तालिका t के लिए c3 आपकी प्राथमिक कुंजी है, तो आप इसे अनुक्रमणिका के साथ तेज़ बनाने के लिए क्वेरी में कुछ भी बेहतर नहीं कर सकते।
-
मान लें कि c1 आपकी प्राथमिक कुंजी t है:
ALTER TABLE t ADD INDEX covering_index (c3,c2);
-
यदि c1 आपका pk नहीं है (और न ही c2 है), तो इसका उपयोग करें:
ALTER TABLE t ADD INDEX covering_index (c3,c2,c1);
-
यदि c2 आपका PK है तो इसका उपयोग करें:
ALTER TABLE t ADD INDEX covering_index (c3,c1);
-
यदि डिस्क पर स्थान या डालने की गति एक समस्या है, तो आप एक बिंदु अनुक्रमणिका करना चुन सकते हैं। आप कुछ प्रदर्शन का त्याग करेंगे, लेकिन यदि आप भारी सम्मिलित हैं तो यह सही विकल्प हो सकता है:
ALTER TABLE t ADD INDEX a_point_index (c3);