एक index एक डेटाबेस संरचना है कि डेटाबेस, जब क्षेत्र (रों) सूचकांक में के आधार पर खोज करने के अलग-अलग पंक्तियों को गति पहुँच मदद कर सकते है।
आपके उदाहरण में, CREATE INDEX
कथन परपर कॉलम tag
का उपयोग कर एक इंडेक्स बनाता है। यदि आप tag
फ़ील्ड के आधार पर तालिका से पंक्तियों की खोज करना चाहते हैं, तो डेटाबेस इंडेक्स का उपयोग पंक्ति को अधिक कुशलता से देख सकता है। किसी इंडेक्स के बिना, डेटाबेस को तालिका के पूर्ण स्कैन का सहारा लेना पड़ सकता है, जो अधिक समय ले सकता है (कई कारकों के आधार पर, तालिका के आकार, मूल्यों का वितरण, सटीक क्वेरी मानदंड)। विभिन्न डेटाबेस विभिन्न प्रकार के इंडेक्स का भी समर्थन करते हैं, जिनका उपयोग विभिन्न तरीकों से डेटा खोजने के लिए किया जा सकता है।
इंडेक्स का भी नुकसान है: प्रत्येक इंडेक्स के लिए, उस तालिका के लिए गति लिखें। यदि आप कोई पंक्ति डालते हैं, तो इंडेक्स होने का मतलब है कि डेटाबेस लेखन के अलावा पंक्ति में ही, इसे इंडेक्स को भी अपडेट करना होगा।
यह तय करना कि कौन से कॉलम पर इंडेक्स डालना मुश्किल हो सकता है, और हमेशा के रूप में, असली दुनिया डेटा के खिलाफ मानक या वास्तविक दुनिया के प्रश्न प्रदर्शन को मापने का सबसे सटीक तरीका हैं। आम तौर पर आप उन कॉलम पर इंडेक्स चाहते हैं जिन्हें आप खोज रहे होंगे। तो यदि आप tag
द्वारा एक पंक्ति को देखना चाहते हैं तो यह निश्चित रूप से वहां एक इंडेक्स डालने का एहसास हो जाता है। लेकिन अगर आपके पास एड्रेस बुक है, तो आपको (संभवतः) सड़क, ज़िप/पोस्टकोड या फोन नंबर पर खोजने की ज़रूरत नहीं है, इसलिए यह लेखन प्रदर्शन हिट के लायक नहीं होगा।
आपकी प्राथमिक कुंजी कॉलम लगभग हमेशा डेटाबेस द्वारा जेनरेट की गई अनुक्रमणिका होगी। और यदि आप किसी विशेष कॉलम के मानों को अद्वितीय रखना चाहते हैं, तो इसे लागू करने के लिए UNIQUE INDEX
बनाया जा सकता है।
This SO प्रश्न डेटाबेस इंडेक्स के लिए अंगूठे के नियमों के बारे में पूछता है, जो उपयोगी हो सकता है।
स्रोत
2009-07-30 22:26:33
आपके साथ क्या गलत है जो इस तरह के प्रश्नों को कम करते हैं? यह एक पूरी तरह से वैध सवाल है, और वास्तव में वहां बहुत से लोग हैं जो * सोचते हैं कि वे डेटाबेस के बारे में सभी जानते हैं और यह समझा नहीं सकते कि इंडेक्स कैसे काम करता है। –