इंडेक्स डेटा रिट्रीवल को तेज़ करता है। इसके बिना, डेटाबेस मिलान करने वाले रिकॉर्ड खोजने के लिए प्रत्येक पंक्ति को स्कैन करता है। इंडेक्स होने पर, यह सीधे संबंधित पंक्तियों पर पहुँच जाता है। इंडेक्स एक अलग डेटा संरचना है जो मानों को स्थानों से मैप करती है। पुस्तक इंडेक्स भी इसी तरह काम करता है। आप एक शब्द खोजते हैं और पृष्ठ संख्या पाते हैं। आप उसे खोजने के लिए प्रत्येक पृष्ठ नहीं पढ़ते हैं। डेटाबेस भी यही करता है।
इंडेक्सिंग की अपनी लागत होती है। ये जगह घेरते हैं। इंडेक्स को भी अपडेट करना पड़ता है, इसलिए इंसर्ट, अपडेट और डिलीट ऑपरेशन धीमे हो जाते हैं। हर राइट ऑपरेशन की लागत बढ़ जाती है। इसका फायदा यह है कि रीड ऑपरेशन तेज़ हो जाते हैं। रीड ऑपरेशन पर ज़्यादा ज़ोर देने वाले वर्कलोड के लिए इंडेक्सिंग ज़रूरी है। राइट ऑपरेशन पर ज़्यादा ज़ोर देने वाले वर्कलोड के लिए, बहुत ज़्यादा इंडेक्सिंग से परफॉर्मेंस पर बुरा असर पड़ता है। किन कॉलम को इंडेक्स करना है, यह तय करने के लिए क्वेरी पैटर्न को समझना ज़रूरी है। WHERE क्लॉज़, JOIN कंडीशन और ORDER BY क्लॉज़ में इस्तेमाल होने वाले कॉलम इंडेक्सिंग के लिए अच्छे विकल्प हैं। कम कार्डिनैलिटी वाले कॉलम, जैसे कि बूलियन फ्लैग, इंडेक्सिंग के लिए अच्छे विकल्प नहीं हैं क्योंकि इंडेक्स सर्च को ज़्यादा सीमित नहीं करता। कंपोजिट इंडेक्स कई कॉलम को कवर करते हैं और कई फ़ील्ड पर फ़िल्टर करने वाली क्वेरी को सपोर्ट कर सकते हैं। कंपोजिट इंडेक्स में कॉलम का क्रम मायने रखता है। डेटाबेस कंपोजिट इंडेक्स का इस्तेमाल सिर्फ़ पहले कॉलम पर क्वेरी के लिए कर सकता है, लेकिन सिर्फ़ आखिरी कॉलम पर नहीं। इंडेक्स डिज़ाइन एक तरह का समझौता है। लक्ष्य यह है कि ज़रूरी क्वेरी को तेज़ किया जाए, लेकिन राइट ऑपरेशन की गति ज़रूरत से ज़्यादा धीमी न हो।
अनुक्रमणिका प्रकार
- बी-ट्री — अधिकांश डेटाबेस के लिए डिफ़ॉल्ट मान, रेंज क्वेरी के लिए उपयुक्त
- हैश — तेज़ समानता खोज, रेंज समर्थन नहीं
- बिटमैप — कम संख्या वाले कॉलम, विश्लेषणात्मक क्वेरी
- पूर्ण पाठ — पाठ खोज
- कंपोजिट — एक ही इंडेक्स में कई कॉलम
इंडेक्स एक शॉर्टकट है। यह रीड स्पीड के लिए राइट स्पीड और स्टोरेज को कम कर देता है। इसका उपयोग वहां करें जहां रीड सबसे महत्वपूर्ण हो।
Comments (3)
Leave a comment