2010-11-04 15 views
19

विभिन्न ओआरएम के लिए दस्तावेज़ों में वे हमेशा इंडेक्स बनाने के लिए एक तरीका प्रदान करते हैं, आदि। वे हमेशा दक्षता के लिए उपयुक्त इंडेक्स बनाने के लिए सुनिश्चित करते हैं, जैसे कि एक गैर-लिखित-एसक्यूएलर को अंतर्निहित ज्ञान है, जिसकी आवश्यकता है एक ओआरएम का प्रयोग करें। इंडेक्स (पीके के बाहर) की मेरी समझ मूल रूप से है: यदि आप कॉलम की सामग्री के आधार पर LIKE क्वेरी (यानी खोज) करने की योजना बनाते हैं, तो आपको उस कॉलम के लिए एक पूर्ण टेक्स्ट इंडेक्स का उपयोग करना चाहिए। इंडेक्स (ज्यादातर दक्षता से संबंधित) के संबंध में मुझे और क्या पता होना चाहिए? मुझे लगता है कि मेरे दरवाजे पर ज्ञान की दुनिया है, लेकिन इसके नीचे एक बड़ा गुना माउस पैड जाम है, इसलिए मैं नहीं जा सकता (मुझे नहीं पता कि मुझे ऐसा क्यों लगा कि मुझे ऐसा कहना जरूरी था, लेकिन सोफे प्रदान करने के लिए धन्यवाद)।मुझे कैसे पता चलेगा कि कॉलम को कब अनुक्रमणित करना है, और किसके साथ?

उत्तर

21

बहुत मोटे तौर पर एक पुस्तक के अंत में सूचकांक की तरह एक सूचकांक के बारे में सोचना लागू होते हैं। यह पुस्तक की सामग्री से एक पूरी तरह से अलग क्षेत्र है, जहां आप कुछ विशिष्ट मूल्य की तलाश कर रहे हैं, तो आप इंडेक्स पर जा सकते हैं और इसे देख सकते हैं (इंडेक्स का ऑर्डर किया जाता है, इसलिए किताबों के हर पृष्ठ को स्कैन करने से चीजों को ढूंढना बहुत तेज़ है)।

इंडेक्स एंट्री में एक पेज नंबर है, तो आप तुरंत अपने विषय की तलाश में पेज पर जा सकते हैं। एक डेटाबेस सूचकांक बहुत समान है; यह आपके डेटाबेस (इंडेक्स में शामिल फ़ील्ड) में प्रासंगिक जानकारी की ऑर्डर की गई सूची है, जो मेल खाने वाले रिकॉर्ड ढूंढने के लिए डेटाबेस के लिए जानकारी के साथ है।

तो ... जब आप ऐसी जानकारी प्राप्त करते हैं जो आपको अक्सर खोजने की आवश्यकता होती है तो आप एक अनुक्रमणिका बनायेंगे। सामान्य इंडेक्स आपको 'आंशिक' प्रश्नों की तरह खोजने में मदद नहीं करते हैं, लेकिन किसी भी समय आपको परिणामों का एक सेट प्राप्त करने की आवश्यकता होती है जहां फ़ील्ड एक्स के पास कुछ मूल्य है, वे डीबीएमएस को पूरी तालिका को 'स्कैन' करने की आवश्यकता रखते हैं मिलान मूल्यों की तलाश में।

जब भी आपको कॉलम पर सॉर्ट करने की आवश्यकता होती है तो वे भी मदद करते हैं।

ध्यान में रखने के लिए एक और बात; यदि डीबीएमएस आपको एक से अधिक इंडेक्स बनाने की अनुमति देता है जिसमें एकाधिक फ़ील्ड हैं, तो ऐसा करने के प्रभावों की जांच करना सुनिश्चित करें, जो आपके डीबीएमएस के लिए विशिष्ट हैं। एक इंडेक्स जिसमें एकाधिक फ़ील्ड शामिल हैं, केवल उन सभी क्षेत्रों को उपयोगी होने पर पूरी तरह से (या बिल्कुल) उपयोगी होने की संभावना है। इसके विपरीत, एक फ़ील्ड के लिए एक से अधिक इंडेक्स होने पर, प्रति फ़ील्ड एक फ़ील्ड के साथ, कई फ़ील्ड द्वारा फ़िल्टरिंग/सॉर्टिंग वाले प्रश्नों के लिए अधिक (या कोई भी) सहायता नहीं हो सकती है।


आपने पूर्ण पाठ अनुक्रमणिका और पीके (प्राथमिक कुंजी) का उल्लेख किया है। ये नियमित इंडेक्स से अलग हैं, हालांकि वे अक्सर समान उद्देश्यों को पूरा करते हैं।

सबसे पहले, ध्यान दें कि एक प्राथमिक कुंजी आमतौर पर एक सूचकांक (एमएसएसक्यूएल में, एक 'क्लस्टरर्ड इंडेक्स' में) है, लेकिन इसे विशेष रूप से मामला होने की आवश्यकता नहीं है। एक उदाहरण के रूप में, एक एमएसएसएलएल पीके डिफ़ॉल्ट रूप से क्लस्टर्ड इंडेक्स है; क्लस्टर्ड इंडेक्स विशेष हैं कि वे कहीं और संग्रहीत डेटा का एक अलग बिट नहीं हैं, लेकिन क्लस्टरर्ड इंडेक्स द्वारा डेटा को डेटा में ही व्यवस्थित किया जाता है। यही कारण है कि एक लोकप्रिय पीके int मान है जो अनुक्रमिक, बढ़ते मूल्यों के साथ स्वतः उत्पन्न होता है। इसलिए, क्लस्टर्ड इंडेक्स विशेष रूप से फ़ील्ड के मूल्य से तालिका में डेटा टाइप करता है। इसे पारंपरिक शब्दकोश से तुलना करें; प्रविष्टियों को स्वयं 'कुंजी' द्वारा आदेश दिया जाता है, जिसे परिभाषित किया जा रहा शब्द है।

लेकिन एमएसएसक्यूएल में (अपनी जानकारी के लिए अपने डीबीएमएस दस्तावेज़ीकरण की जांच करें), यदि आप चाहें तो क्लस्टरेड इंडेक्स को एक अलग फ़ील्ड के रूप में बदल सकते हैं। कभी-कभी यह datetime आधारित फ़ील्ड पर किया जाता है।


पूर्ण पाठ अनुक्रमणिका पूरी तरह से जानवरों के विभिन्न प्रकार हैं। वे कुछ सिद्धांतों का उपयोग करते हैं, लेकिन वे जो कर रहे हैं वह सामान्य इंडेक्स के समान नहीं है, जिसका मैं वर्णन कर रहा हूं। इसके अलावा: कुछ डीबीएमएस में, LIKE प्रश्न पूर्ण पाठ अनुक्रमणिका का उपयोग नहीं करते हैं; विशेष क्वेरी ऑपरेटरों की आवश्यकता है।

ये इंडेक्स अलग हैं क्योंकि उनका इरादा कॉलम के पूरे मान को खोजने/क्रमबद्ध नहीं करना है (एक संख्या, एक तिथि, चार डेटा का एक छोटा सा हिस्सा), लेकिन पाठ के भीतर अलग-अलग शब्दों/वाक्यांशों को ढूंढने के बजाय क्षेत्र अनुक्रमित किया जा रहा है।

वे अक्सर समान शब्दों, अलग-अलग काल, सामान्य गलत वर्तनी और इसी तरह की खोज करने में सक्षम होते हैं, और आम तौर पर शोर शब्दों को अनदेखा करते हैं। वे जिस तरह से काम करते हैं वह यह है कि उन्हें विभिन्न ऑपरेटरों को भी उनका उपयोग करने की आवश्यकता हो सकती है। (फिर से, अपने डीबीएमएस के लिए अपने स्थानीय दस्तावेज की जांच करें!)

+3

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

+0

@orokusaki मैंने आपकी टिप्पणी संपादित की जैसा आपने नोट किया था। (मोड एक समय सीमा के बिना संपादित कर सकते हैं)। अच्छी स्पष्टीकरण! –

1

इस उत्तर ओरेकल-विशिष्ट है, लेकिन जवाब में मुख्य बिंदुओं सबसे रिलेशनल डाटाबेस सिस्टम

How to choose and optimize oracle indexes?

+0

धन्यवाद। बीटीडब्ल्यू, तुम्हारी उस तस्वीर में क्या चल रहा है, और क्या यह एक असली व्यक्ति है ?! – orokusaki

+1

http://www.charliewhite.info/ – CheeseConQueso

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