2010-07-21 11 views
14

मुझे समझ में नहीं आता कि SQLite में कोई अनुक्रमणिका क्या है या करता है। (एसक्यूएल नहीं) मुझे लगता है कि यह ऑर्डर और निर्णय लेने और डेटा तक पहुंच में सॉर्ट करने की अनुमति देता है। लेकिन मैं बस अनुमान लगा रहा हूँ।SQLite में एक अनुक्रमणिका क्या है?

+0

चित्रों के साथ एक उत्कृष्ट SQLite ट्यूटोरियल है [यह बताता है कि विभिन्न प्रकार के सूचकांक क्वेरी कैसे तेज करेंगे] (https://www.sqlite.org/queryplanner.html)। –

उत्तर

15

एसक्यूएल क्यों नहीं? जवाब वही है, हालांकि कार्यान्वयन के बीच आंतरिक विवरण अलग-अलग होंगे।

कॉलम पर एक इंडेक्स डालने से डेटाबेस इंजन को निर्माण करने के लिए कहा जाता है, असुरक्षित रूप से, एक इंडेक्स जो तालिका में प्रत्येक पंक्ति को स्कैन किए बिना कॉलम में कुछ मानों की खोज करते समय पंक्तियों को तेज़ी से ढूंढने की अनुमति देता है।

एक साधारण (और संभवतः उपोपयोगी) सूचकांक सामान्य बाइनरी खोज पेड़ के साथ बनाया जा सकता है।

1

किसी भी एसक्यूएल में एक सूचकांक के रूप में ही (हाँ एसक्यूएल) आरडीबीएमएस हैं।

आप देख सकते हैं SQLite क्वेरी अनुकूलक अनुक्रमित मानता है: http://www.sqlite.org/optoverview.html

3

एक सूचकांक (किसी भी डेटाबेस में) किसी तरह का जो के बारे में जानकारी के साथ चाबियों का एक हल कर (या कम से कम, जल्दी से खोजा) सूची एकत्रित करती है की एक सूची है कुंजी से जुड़े शेष डेटा को कहां खोजें।

आपको इस बारे में इंटरनेट पर जानकारी नहीं मिल रही है क्योंकि आप मानते हैं कि यह एक SQLite अवधारणा है, लेकिन ऐसा नहीं है - यह एक सामान्य कंप्यूटर इंजीनियरिंग अवधारणा है।

3

पता पुस्तिका के बारे में सोचें। यदि आप रॉसी मारियो के फोन नंबर की खोज कर रहे हैं, तो आप जानते हैं कि उपनामों को वर्णानुक्रम के क्रम में आदेश दिया गया है ताकि आप R पर जा सकें, फिर o पत्र और अन्य के लिए खोजें। इंडेक्स वही करता है, प्रविष्टियों के संदर्भों का एक संग्रह है जो कुछ संचालन को तेज करता है।

एक अनियंत्रित पता पुस्तिका में खोजना बहुत धीमा होगा, आपको पहले पृष्ठ पर पहले नाम से शुरू करना चाहिए और जब तक आप जिस नाम को ढूंढ रहे हैं उसे तब तक सभी पृष्ठों में खोजना चाहिए।

2

मैं इसे acending में छंटाई और आदेश और तेज आंकड़ों के पहुँच decending के लिए अनुमति देता है।

हां, यही वह है। इंडेक्स क्रमबद्ध डेटा रखने का अमूर्त बनाते हैं, जो खोजों को महत्वपूर्ण रूप से गति देता है। एक संतुलित बाइनरी खोज पेड़ का उपयोग कर एक सूचकांक के साथ, खोज ओ (एन) समय के बजाय ओ (लॉग एन) लेते हैं।

अन्य उत्तरों ने उल्लेख नहीं किया है कि अधिकांश डेटाबेस UNIQUE (और इसलिए PRIMARY KEY) बाधाओं को लागू करने के लिए इंडेक्स का उपयोग करते हैं। क्योंकि विशिष्टता सुनिश्चित करने के लिए, आपको यह पता लगाने में सक्षम होना चाहिए कि कुंजी पहले से मौजूद है या नहीं, और इसका मतलब है कि आप इसके लिए तेज़ खोज चाहते हैं।

अपने SQLite डेटाबेस में एक नज़र डालें। उन sqlite_autoindex_ सूचकांक अद्वितीय बाधाओं को लागू करने के लिए बनाए गए थे।

संबंधित मुद्दे