नहीं, आप सभी स्तंभों को अनुक्रमित नहीं करते हैं। आप उन स्तंभों को अनुक्रमित करते हैं जो विशेष रूप से WHERE
. में शामिल हैं खंड, और कभी-कभी यदि वे ORDER BY
. में शामिल होते हैं ।
इस मामले में आप type
. पर एक इंडेक्स चाहते हैं :
SELECT name FROM users WHERE type='admin'
इस मामले में आप active,type
. पर एक इंडेक्स चाहते हैं :
SELECT name FROM users WHERE type='admin' AND active=1
इस मामले में आप active,type,name
. पर एक अनुक्रमणिका चाहते हैं :
SELECT name FROM users WHERE type-='admin' AND active=1 ORDER BY name LIMIT 10
आप जितनी अधिक अनुक्रमणिकाएँ जोड़ेंगे, उतनी ही धीमी गति से लिखी जाएगी, लेकिन उतनी ही तेज़ी से पढ़ी जाएगी। यह एक क्लासिक ट्रेड-ऑफ है। ध्यान से मूल्यांकन करें कि आपको किन सूचकांकों की आवश्यकता है और उन्हें तभी लागू करें जब कोई ठोस लाभ होगा। उन्हें सिर्फ इसलिए थप्पड़ मत मारो क्योंकि आपको लगता है कि उन्हें वहां होना चाहिए।
सुपर छोटे टेबलों पर, <1000 पंक्तियों वाले, अनुक्रमणिका इतनी मदद नहीं करेंगे क्योंकि एक टेबल स्कैन में इतना समय नहीं लगेगा। गैर-तुच्छ किसी भी चीज़ पर वे बिल्कुल आवश्यक हैं।
यदि आपको प्रदर्शन संबंधी समस्याएं आ रही हैं, तो मेरा सुझाव है कि आपकी स्कीमा सबसे बड़ी बाधा है, न कि अनुक्रमणिका की कमी।