दिलचस्प पोस्ट
System.in से लिंक स्कैनर को बंद करें लिनक्स में डायरेक्ट मेमोरी एक्सेस फ्लोट / डबल वैल्यू निकालें यूआईएसक्रोलएव्यू के साथ आईओएस ऑटोलेयआउट: स्क्रॉल व्यू के सामग्री दृश्य को स्क्रॉल व्यू में क्यों नहीं भरता है? MongoDB के लिए रैम में "कार्य सेट" को फिट करने का क्या अर्थ है? एएसपी.नेट एमवीसी में ऑटो रीफ्रेश एक SQLite "IN" खंड के लिए पैरामीटर प्रतिस्थापन जावास्क्रिप्ट का उपयोग करने के लिए छवि का आकार (ऊंचाई और चौड़ाई) कैसे प्राप्त करें? त्रुटि: कार्य निष्पादन के लिए विफल ': एंड्रॉइड: रूपांतरण क्लासेस और संसाधनों के साथ पीओजीआरएआरएफआरईईआरई' पायथन में एक्सेल फाइल पढ़ें libc ++ abi.dylib: प्रकार NSException (lldb) के बिना अपवाद के साथ समाप्त SQLSTATE : अमान्य पैरामीटर संख्या: बाउंड वैरिएबल की संख्या लाइन 102 पर टोकनों की संख्या से मेल नहीं खाती एक सेट के माध्यम से संयोजित करने का एक अच्छा तरीका क्या है? सीएसएस वितरण अनुकूलन: कैसे सीएसएस लोडिंग स्थगित करने के लिए? मैं x86 विंडोज में एक सीपीयू कैश फ्लश कैसे कर सकता हूं?

कैसे पोस्टग्रेएसयूएलएल UNIQUE बाधा / इसे किस प्रकार का सूचकांक उपयोग करता है?

मैं पोस्टग्रेज़ में अनूठे और इंडेक्स के बीच के रिश्ते को हल करने की कोशिश कर रहा हूं।

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

इसलिए अपने शब्द पर डॉक्स लेते हुए मैं सिर्फ चीजों को अनन्य रूप में घोषित करने और निहित सूचकांक का उपयोग करने जा रहा हूं- या – एक इंडेक्स बनाना और मानना ​​नहीं है कि मान अद्वितीय हैं क्या यह गलती है?

मैं किस प्रकार का इंडेक्स अद्वितीय से प्राप्त कर रहा हूं? यह देखते हुए कि केवल एक btree अद्वितीय बाधा को स्वीकार करेगा और अनन्य रूप से एक सूचकांक बनाता है यह सच है कि UNIQUE एक btree सूचकांक बनाता है? मैं किसी हैश इंडेक्स पर अनजाने में सीमाएं चलाना नहीं चाहता हूं

Solutions Collecting From Web of "कैसे पोस्टग्रेएसयूएलएल UNIQUE बाधा / इसे किस प्रकार का सूचकांक उपयोग करता है?"

या – एक सूचकांक बनाओ और न मानें कि मूल्य अद्वितीय हैं

यह मानना ​​सुरक्षित है कि मूल्य अद्वितीय हैं, यदि आपके पास एक अनूठी अनुक्रमणिका परिभाषित है इसी तरह से अद्वितीय बाधाओं को लागू किया जाता है (समय पर, और शायद भविष्य के सभी संस्करणों में भी)

एक UNIQUE बाधा को परिभाषित करना प्रभावी ढंग से एक ही है (लगभग, नीचे देखें) इंडेक्स प्रकार को निर्दिष्ट किए बिना एक अद्वितीय अनुक्रमणिका बनाने के रूप में। और, मैं मैन्युअल उद्धरण :

विकल्प btree, हैश, सार, और जिन हैं डिफ़ॉल्ट विधि btree है

एक बाधा जोड़ना सिर्फ वैधानिक तरीका है जो भविष्य के संस्करणों में नहीं तोड़ पाएगा जहां इसे अलग ढंग से लागू किया जा सकता है। बस इतना ही।

और नहीं, एक अद्वितीय बाधा को केवल सभी संस्करणों में मूल बीटीआरआई इंडेक्स के साथ लागू किया जा सकता है और पोस्टग्रेएसक्यूएल 9.4 भी शामिल है। मैंने मैन्युअल में "ADD table_constraint_using_index" पैराग्राफ का हवाला दिया :

सूचकांक में अभिव्यक्ति स्तंभ नहीं हो सकते हैं और न ही आंशिक सूचकांक हो सकता है। इसके अलावा, यह डिफ़ॉल्ट सॉर्ट क्रम के साथ एक बी-ट्री इंडेक्स होना चाहिए।

अन्य मतभेद

  • अद्वितीय बाधाओं को स्थगित किया जा सकता है अद्वितीय अनुक्रमणिका के लिए यह संभव नहीं है। SET CONSTRAINTS कमान पर नज़र डालें और अधिक के लिए लिंक का पालन करें।

  • एक विदेशी कुंजी केवल एक अनूठी अनुक्रमणिका के साथ स्तंभों को संदर्भित नहीं कर सकता प्रति प्रलेखन:

    एक विदेशी कुंजी को ऐसे स्तंभों को संदर्भित करना चाहिए जो कि प्राथमिक कुंजी हैं या एक अद्वितीय बाध्य हैं।

Dba.SE पर संबंधित उत्तर में इस संबंध में अधिक जानकारी:

  • जब मैं एक ऑपरेटर वर्ग के साथ एक सूचकांक की आवश्यकता है तो अद्वितीय बाधा से अद्वितीय सूचकांक बेहतर है