Teradata - विभाजन प्राथमिक सूचकांक
विभाजन प्राथमिक सूचकांक (PPI) एक अनुक्रमण तंत्र है जो कुछ प्रश्नों के प्रदर्शन को बेहतर बनाने में उपयोगी है। जब पंक्तियों को एक तालिका में डाला जाता है, तो उन्हें एएमपी में संग्रहीत किया जाता है और उनकी पंक्ति हैश क्रम द्वारा व्यवस्थित की जाती है। जब एक टेबल को पीपीआई के साथ परिभाषित किया जाता है, तो पंक्तियों को उनके विभाजन संख्या द्वारा क्रमबद्ध किया जाता है। प्रत्येक विभाजन के भीतर, उनकी पंक्ति हैश द्वारा व्यवस्थित की जाती है। परिभाषित विभाजन के आधार पर पंक्तियों को एक विभाजन को सौंपा गया है।
लाभ
कुछ प्रश्नों के लिए पूर्ण तालिका स्कैन से बचें।
अतिरिक्त शारीरिक संरचना और अतिरिक्त I / O रखरखाव की आवश्यकता वाले माध्यमिक सूचकांक के उपयोग से बचें।
एक बड़ी तालिका के सबसेट को जल्दी से एक्सेस करें।
पुराने डेटा को जल्दी से ड्रॉप करें और नया डेटा जोड़ें।
उदाहरण
ऑर्डरऑनो पर प्राथमिक सूचकांक के साथ निम्नलिखित आदेश तालिका पर विचार करें।
| जमा मत करो | आदेश संख्या | आदेश की तारीख | कुल आदेश |
|---|---|---|---|
| 101 | 7501 | 2015/10/01 | 900 |
| 101 | 7502 | 2015/10/02 | 1,200 |
| 102 | 7503 | 2015/10/02 | 3000 |
| 102 | 7504 | 2015/10/03 | 2,454 |
| 101 | 7505 | 2015/10/03 | 1201 |
| 103 | 7506 | 2015/10/04 | 2,454 |
| 101 | 7507 | 2015/10/05 | 1201 |
| 101 | 7508 | 2015/10/05 | 1201 |
मान लें कि रिकॉर्ड एएमपी के बीच वितरित किए गए हैं जैसा कि निम्नलिखित तालिकाओं में दिखाया गया है। रिकॉर्ड किए गए AMPs में संग्रहीत किए जाते हैं, उनकी पंक्ति हैश के आधार पर सॉर्ट की जाती हैं।
| RowHash | आदेश संख्या | आदेश की तारीख |
|---|---|---|
| 1 | 7505 | 2015/10/03 |
| 2 | 7504 | 2015/10/03 |
| 3 | 7501 | 2015/10/01 |
| 4 | 7508 | 2015/10/05 |
| RowHash | आदेश संख्या | आदेश की तारीख |
|---|---|---|
| 1 | 7507 | 2015/10/05 |
| 2 | 7502 | 2015/10/02 |
| 3 | 7506 | 2015/10/04 |
| 4 | 7503 | 2015/10/02 |
यदि आप किसी विशेष तिथि के आदेश निकालने के लिए क्वेरी चलाते हैं, तो ऑप्टिमाइज़र पूर्ण तालिका स्कैन का उपयोग करने का विकल्प चुन सकता है, तो एएमपी के भीतर सभी रिकॉर्ड एक्सेस किए जा सकते हैं। इससे बचने के लिए, आप ऑर्डर की तारीख को विभाजन प्राथमिक सूचकांक के रूप में परिभाषित कर सकते हैं। जब पंक्तियों को ऑर्डर टेबल में डाला जाता है, तो वे ऑर्डर की तारीख से विभाजित होते हैं। प्रत्येक विभाजन के भीतर उन्हें उनकी पंक्ति हैश द्वारा आदेश दिया जाएगा।
निम्न डेटा दिखाता है कि रिकॉर्ड को एएमपी में कैसे संग्रहीत किया जाएगा, यदि वे ऑर्डर दिनांक द्वारा विभाजित किए गए हैं। यदि ऑर्डर दिनांक द्वारा रिकॉर्ड्स तक पहुंचने के लिए एक क्वेरी चलाई जाती है, तो केवल उस विशेष ऑर्डर के रिकॉर्ड वाले विभाजन को एक्सेस किया जाएगा।
| PARTITION | RowHash | आदेश संख्या | आदेश की तारीख |
|---|---|---|---|
| 0 | 3 | 7501 | 2015/10/01 |
| 1 | 1 | 7505 | 2015/10/03 |
| 1 | 2 | 7504 | 2015/10/03 |
| 2 | 4 | 7508 | 2015/10/05 |
| PARTITION | RowHash | आदेश संख्या | आदेश की तारीख |
|---|---|---|---|
| 0 | 2 | 7502 | 2015/10/02 |
| 0 | 4 | 7503 | 2015/10/02 |
| 1 | 3 | 7506 | 2015/10/04 |
| 2 | 1 | 7507 | 2015/10/05 |
विभाजन प्राथमिक सूचकांक के साथ एक तालिका बनाने के लिए एक उदाहरण निम्नलिखित है। विभाजन द्वारा खंड विभाजन को परिभाषित करने के लिए उपयोग किया जाता है।
CREATE SET TABLE Orders (
StoreNo SMALLINT,
OrderNo INTEGER,
OrderDate DATE FORMAT 'YYYY-MM-DD',
OrderTotal INTEGER
)
PRIMARY INDEX(OrderNo)
PARTITION BY RANGE_N (
OrderDate BETWEEN DATE '2010-01-01' AND '2016-12-31' EACH INTERVAL '1' DAY
);
उपरोक्त उदाहरण में, तालिका को ऑर्डरडेट कॉलम द्वारा विभाजित किया गया है। प्रत्येक दिन के लिए एक अलग विभाजन होगा।