Oracle Database
इंडेक्स
खोज…
परिचय
यहाँ मैं उदाहरण का उपयोग करके अलग-अलग सूचकांक की व्याख्या करूँगा कि कैसे सूचकांक क्वेरी के प्रदर्शन को बढ़ाता है, कैसे सूचकांक डीएमएल के प्रदर्शन को कम करता है आदि
बी-ट्री इंडेक्स
CREATE INDEX ord_customer_ix ON orders (customer_id);
डिफ़ॉल्ट रूप से, अगर हम किसी चीज का उल्लेख नहीं करते हैं, तो ओरेकल बी-ट्री इंडेक्स के रूप में एक इंडेक्स बनाता है। लेकिन हमें पता होना चाहिए कि इसका उपयोग कब करना है। बी-ट्री इंडेक्स डेटा को बाइनरी ट्री फॉर्मेट के रूप में संग्रहीत करता है। जैसा कि हम जानते हैं कि, अनुक्रमणिका एक स्कीमा वस्तु है जो अनुक्रमित स्तंभ के लिए प्रत्येक मान के लिए किसी प्रकार की प्रविष्टि को संग्रहीत करती है। इसलिए, जब भी उन स्तंभों पर कोई खोज होती है, तो यह उस रिकॉर्ड के सटीक स्थान के लिए इंडेक्स में जांच करता है ताकि वह तेजी से पहुंच सके। अनुक्रमण के बारे में कुछ बिंदु:
- सूचकांक में प्रविष्टि के लिए खोज करने के लिए, किसी प्रकार के द्विआधारी खोज एल्गोरिथ्म का उपयोग किया जाता है।
- जब डेटा कार्डिनैलिटी अधिक होती है, तो बी-ट्री इंडेक्स का उपयोग करना सही होता है।
- इंडेक्स डीएमएल को धीमा बनाता है, प्रत्येक रिकॉर्ड के लिए, इंडेक्स किए गए कॉलम के लिए इंडेक्स में एक प्रविष्टि होनी चाहिए।
- इसलिए, यदि आवश्यक नहीं है, तो हमें सूचकांक बनाने से बचना चाहिए।
बिटमैप इंडेक्स
CREATE BITMAP INDEX
emp_bitmap_idx
ON index_demo (gender);
- डेटा कार्डिनिटी कम होने पर बिटमैप इंडेक्स का उपयोग किया जाता है।
- यहां, लिंग के पास कम कार्डिनैलिटी के साथ मूल्य है। मान पुरुष, महिला और अन्य हो सकते हैं।
- इसलिए, यदि हम खोज करते समय इस 3 मानों के लिए एक बाइनरी ट्री बनाते हैं, तो यह अनावश्यक रूप से फैल जाएगा।
- बिटमैप संरचनाओं में, एक दो-आयामी सरणी को तालिका में प्रत्येक पंक्ति के लिए एक स्तंभ के साथ बनाया जाता है जिसे अनुक्रमित किया जाता है। प्रत्येक कॉलम बिटमैपेड इंडेक्स के भीतर एक अलग मूल्य का प्रतिनिधित्व करता है। यह दो-आयामी सरणी तालिका में पंक्तियों की संख्या से गुणा सूचकांक के भीतर प्रत्येक मूल्य का प्रतिनिधित्व करती है।
- पंक्ति पुनर्प्राप्ति समय पर, ओरेकल बिटमैप को रैम डेटा बफ़र्स में बदल देता है ताकि मिलान मूल्यों के लिए इसे तेजी से स्कैन किया जा सके। ये मिलान मान एक पंक्ति-आईडी सूची के रूप में ओरेकल को वितरित किए जाते हैं, और ये पंक्ति-आईडी मान आवश्यक जानकारी तक सीधे पहुंच सकते हैं।
फंक्शन आधारित सूचकांक
CREATE INDEX first_name_idx ON user_data (UPPER(first_name));
SELECT *
FROM user_data
WHERE UPPER(first_name) = 'JOHN2';
- फंक्शन आधारित इंडेक्स का अर्थ है, किसी फंक्शन पर आधारित इंडेक्स बनाना।
- यदि खोज में (जहां खंड), अक्सर किसी फ़ंक्शन का उपयोग किया जाता है, तो उस फ़ंक्शन के आधार पर सूचकांक बनाना बेहतर होता है।
- यहां, उदाहरण के लिए, खोज के लिए, ऊपरी () फ़ंक्शन का उपयोग किया जा रहा है। इसलिए, ऊपरी फ़ंक्शन का उपयोग करके सूचकांक बनाना बेहतर है।
Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow