2010-12-01 14 views
21

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

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

मैं सीखा है वहाँ अनुक्रमण एक से अधिक प्रकार मैं से चुन सकते हैं कर रहे हैं कि। मैं कैसे निर्धारित करूं कि मेरे डेटाबेस के लिए कौन सी विधि सबसे प्रभावी होगी? एक ही इंडेक्स बनाने के लिए उचित विधि भी होगी जो कॉलम दोनों को कवर करे?

उत्तर

18

Postgres समर्थन बी पेड़, आर-वृक्ष, हैश, सार और जिन अनुक्रमण प्रकार के। बी-पेड़ इंडेक्सिंग सबसे आम है और सबसे आम परिदृश्य फिट बैठता है।

CREATE INDEX idex_name ON table_name USING btree(column1, column2); 

यहाँ createindex प्रलेखन है और यहाँ postgres में विभिन्न indextypes बारे में अधिक जानकारी है: इस वाक्य रचना है।

सूचकांक आप किस प्रकार का उपयोग करना चाहिए क्या आपरेशन के प्रकार, जो आप चाहते पर निर्भर करता है। यदि आप बस समानता जांच चाहते हैं तो हैश इंडेक्स सबसे अच्छा है। सबसे आम परिचालनों के लिए (उदाहरण के लिए तुलना, पैटर्न मिलान) बी-पेड़ का उपयोग किया जाना चाहिए। मैंने व्यक्तिगत रूप से कभी भी जीएसटीटी या जीआईएन इंडेक्सिंग का उपयोग नहीं किया है। वहाँ कोई गुरु वहाँ?

प्रलेखन इन सभी प्रकारों का वर्णन करता है। वे तुम मुझे की तुलना में बेहतर मदद कर सकते हैं :)

आशा इस मदद करता है।

+0

धन्यवाद, मैंने अपने प्रश्नों को थोड़ा सा अद्यतन किया। मैं वास्तव में समानता के लिए पूरी तरह से देख रहा हूं इसलिए मुझे लगता है कि हैश इंडेक्स सबसे अच्छा होगा। – Kellenjb

+2

स्क्रैच करें कि हैश कई स्तंभों में काम नहीं करता है। मान लीजिए कि मुझे यह देखने के लिए कुछ प्रयोग करना होगा कि 2 अलग हैंश तेज हो जाएंगे, फिर 1 सिंगल बी-पेड़ – Kellenjb

+11

आप आमतौर पर हैश इंडेक्स का उपयोग नहीं करना चाहते हैं। पीजी 9.1 डॉक्स से: "हैश इंडेक्स ऑपरेशंस वर्तमान में WAL-log नहीं हैं, इसलिए डेटाबेस क्रैश के बाद हैश इंडेक्स को REINDEX के साथ पुनर्निर्मित करने की आवश्यकता हो सकती है। उन्हें स्ट्रीमिंग या फ़ाइल-आधारित प्रतिकृति पर भी दोहराया नहीं जाता है। इन कारणों से, हैश इंडेक्स का उपयोग वर्तमान में निराश है। " –

3

रूप में अच्छी तरह queryplanner को समझने के लिए, क्योंकि PostgreSQL के इस हिस्से को अपनी अनुक्रमणिका के साथ काम किया है की कोशिश करो। अपने प्रश्नों को अनुकूलित करने के लिए विस्तृत विश्लेषण आवश्यक होगा।

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

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