MySQL में, जब मैं एक समग्र प्राथमिक कुंजी बनाता हूं, कॉलम X, Y, Z
कॉलम के साथ कहें, तो सभी तीन कॉलम स्वचालित रूप से अनुक्रमणिका बन जाते हैं। क्या पोस्टग्रेज़ के लिए भी ऐसा ही होता है?PostgreSQL समग्र प्राथमिक कुंजी
उत्तर
यदि आप (x, y, z)
पर एक समग्र प्राथमिक कुंजी बनाते हैं, तो PostgreSQL (x, y, z)
पर एक अद्वितीय बहु-कॉलम अनुक्रमणिका की सहायता से इसे लागू करता है। इसके अलावा, सभी तीन कॉलम NOT NULL
होना चाहिए, बेशक, PRIMARY KEY
और UNIQUE INDEX
के बीच मुख्य अंतर है।
अपने डेटा पर स्पष्ट प्रतिबंध इसके अलावा, multi-column index भी x
, y
और z
पर तीन अलग-अलग अनुक्रमित से प्रश्नों के प्रदर्शन पर कुछ अलग प्रभाव पड़ता है।
हमने हाल ही में on dba.SE in this related question के बारे में बहुत अच्छी चर्चा की थी। index-only scans in version 9.2 की आगामी सुविधा के उदाहरण, बेंचमार्क, चर्चा और दृष्टिकोण के साथ।
विशेष रूप से, (x, y, z)
पर एक प्राथमिक कुंजी ऊपर शर्तों के साथ प्रश्नों x
, (x,y)
या (x,y,z)
बेहतर पर तेज़ हो जाएगी। यह y
, z
, (y,z)
या (x,z)
पर प्रश्नों के साथ-साथ बहुत कम सीमा तक प्रश्नों के साथ भी मदद करेगा।
यदि आपको बाद के संयोजनों पर प्रश्नों को तेज़ करने की आवश्यकता है, तो आप एक या अधिक अतिरिक्त अनुक्रमणिका बनाना चाहते हैं।
Yes:
PostgreSQL स्वचालित रूप से एक अद्वितीय सूचकांक जब एक अनूठा बाधा या प्राथमिक कुंजी एक मेज के लिए परिभाषित किया गया है बनाता है। इंडेक्स उन कॉलम को कवर करता है जो प्राथमिक कुंजी या अद्वितीय बाधा उत्पन्न करते हैं (एक बहुआयामी सूचकांक, यदि उपयुक्त हो), और वह तंत्र है जो बाधा को लागू करता है।
मुझे लगता है कि सवाल यह था कि प्रत्येक कॉलम को अपनी अनुक्रमणिका मिलती है या नहीं। –
सहमत हैं। सवाल यह नहीं है कि 1 मल्टीकॉलम इंडेक्स स्वचालित रूप से बनाया गया है, लेकिन अगर 3 सिंगल कॉलम इंडेक्स बनाए जाते हैं। और जवाब नहीं है। आपका उत्तर अभी भी प्रासंगिक है क्योंकि यह पाठ्यक्रम के संपादन के बाद पूरक सूचनाएं प्रदान करता है। वास्तव में, @ डोंडी-माइकल-स्ट्रॉमा का उत्तर मूल अनुरोधकर्ता द्वारा चुने गए एक से अधिक प्रासंगिक है। – Chucky
नहीं, आपको तीन-कॉलम प्राथमिक कुंजी के लिए एक अनुक्रमणिका मिलती है।
क्या आपका मतलब है MySQL ** ** ** ** इंडेक्स * बनाता है? बहुत अजीब लगता है –