# डेटाबेस इंडेक्सिंग — सिस्टम डिज़ाइन

Source: https://www.geekswithgeeks.com/hi/system-design/sd-indexing

> तेज़ लुकअप के लिए राइट लागत और स्टोरेज का व्यापार।

## इंडेक्स क्या है

इंडेक्स एक सॉर्टेड साइड-स्ट्रक्चर है (आमतौर पर एक **B-ट्री**) जो किसी कॉलम के मानों से रो लोकेशन की ओर इशारा करता है, ताकि डेटाबेस हर रो स्कैन करने के बजाय बाइनरी-सर्च कर सके।

## राइट की लागत

हर इंडेक्स को इंसर्ट/अपडेट/डिलीट पर अपडेट करना पड़ता है, इसलिए अधिक इंडेक्स का मतलब धीमी राइट और ज़्यादा स्टोरेज है। जिन कॉलम पर आप वास्तव में फ़िल्टर, जॉइन या सॉर्ट करते हैं, उन्हें ही इंडेक्स करें — सब कुछ नहीं।

## किताब का इंडेक्स

डेटाबेस इंडेक्स किसी पाठ्यपुस्तक के पीछे के इंडेक्स जैसा है: यह पन्ने (स्टोरेज) लेता है और कंटेंट बदलने पर किसी को इसे अपडेट करना पड़ता है (राइट), पर यह 'X का हर उल्लेख खोजें' को पूरी किताब पढ़ने से एक लुकअप में बदल देता है।

## कम्पोज़िट इंडेक्स का क्रम मायने रखता है

`(country, city)` पर इंडेक्स केवल country से या country+city से फ़िल्टर करने वाली क्वेरी को तेज़ करता है, पर अकेले city से नहीं — सबसे बाईं कॉलम का उपयोग होना ज़रूरी है। कम्पोज़िट इंडेक्स को अपने वास्तविक क्वेरी पैटर्न के अनुसार क्रमबद्ध करें।
