2013-02-09 33 views
30

मैं Django कोडिंग शैली के बारे में एक पुस्तक पढ़ रहा हूं और जिस पर वे चर्चा करते हैं वह db_index = True है। Django का उपयोग करने के बाद से, मैं कभी भी इस फ़ंक्शन का उपयोग नहीं करता क्योंकि मुझे नहीं पता कि यह फ़ंक्शन क्या कर सकता है।इंडेक्स जोड़ें (db_index = True)

मेरा प्रश्न है, इंडेक्स जोड़ने पर विचार कब करें?

उत्तर

73

यह वास्तव में django विशिष्ट नहीं है; डेटाबेस के साथ और अधिक करने के लिए। जब आप उस कॉलम पर खोज तेज करना चाहते हैं तो आप कॉलम पर इंडेक्स जोड़ते हैं।

आमतौर पर, केवल प्राथमिक कुंजी डेटाबेस द्वारा अनुक्रमित किया जाता है। इसका मतलब है कि प्राथमिक कुंजी का उपयोग करके लुकअप अनुकूलित हैं।

यदि आप द्वितीयक कॉलम पर बहुत सारे लुकअप करते हैं, तो चीजों को गति देने के लिए उस कॉलम में एक इंडेक्स जोड़ने पर विचार करें।

ध्यान रखें, स्केल की अधिकांश समस्याओं की तरह, ये केवल तभी लागू होते हैं जब आपके पास सांख्यिकीय रूप से बड़ी संख्या में पंक्तियां हों (10,000 बड़ी नहीं है)।

इसके अतिरिक्त, हर बार जब आप कोई सम्मिलित करते हैं, तो अनुक्रमणिका को अद्यतन करने की आवश्यकता होती है। इसलिए सावधान रहें कि आप किस कॉलम को इंडेक्स जोड़ते हैं।

हमेशा के रूप में, आप केवल माप सकते हैं कि आप क्या माप सकते हैं - इसलिए EXPLAIN कथन और अपने डेटाबेस लॉग (विशेष रूप से किसी भी धीमी क्वेरी लॉग) का उपयोग यह पता लगाने के लिए करें कि इंडेक्स कहां उपयोगी हो सकते हैं।

+3

इससे मदद मिल सकती है (बहुत कुछ) https://github.com/django-debug-toolbar/django-debug-toolbar#django-debug-toolbar – maazza

+0

इंडेक्स भी सॉर्टिंग को तेज कर सकते हैं। [यह आलेख] (http://sqlmag.com/database-performance-tuning/indexing-sort-performance) एमएस एसक्यूएल सर्वर के बारे में है लेकिन यह किसी भी डेटाबेस के लिए जाता है। – Nick