क्या एक अद्वितीय गुच्छेदार सूचकांक और एक गुच्छेदार प्राथमिक कुंजी के बीच कोई ठोस अंतर है?


17

मैं समझता हूं कि दोनों के बीच अर्थ या इरादे में अंतर हो सकता है , लेकिन क्या संकुलित प्राथमिक कुंजी और क्लस्टर किए गए अद्वितीय सूचकांक के बीच कोई व्यवहार या प्रदर्शन अंतर हैं?

जवाबों:


15

एक मुख्य अंतर यह है कि अद्वितीय सूचकांक में एक NULL मान हो सकता है जिसे प्राथमिक कुंजी में अनुमति नहीं है। क्लस्टर्ड या नहीं, यह प्राथमिक कुंजी बनाम एक अद्वितीय कुंजी के व्यावहारिक कार्यान्वयन के बीच मुख्य अंतर है।

ओह, और यह तथ्य कि एक टेबल में एक पीके और कई यूके :-) हो सकते हैं।

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


इसलिए पीके का उपयोग करने का कोई कारण नहीं है, (ए) के लिए (ए) के रूप में NOT NULL UNIQUE CLUSTEREDया (बी) को उजागर करने के लिए कि एक विशेष यूक्यू मेटाडेटा अर्थ में "विशेष" है, भले ही आरडीएमएस अज्ञेयवादी हो?
जॉन ऑफ ऑल ट्रेड्स

हाँ, ऐसा कुछ, मैं खुद विकल्प बी के लिए जाऊंगा :-)।
मैरियन

एक कारण है - विशेष मूल्य का उपयोग करके आपको रोकने के लिए जहां यह अनुचित है!
जेम्सरियन

@JamesRyan: यह जॉन ऑफ ऑल ट्रेड्स के कारण #A द्वारा कवर किया गया है।
एंड्री एम

1
@JamesRyan: हाँ, बीच PRIMARY KEYऔर NOT NULL UNIQUE, पूर्व को चालू करने के लिए बहुत कठिन होगा NULL UNIQUE(खासकर यदि बाधा पहले से ही एक विदेशी कुंजी द्वारा संदर्भित की गई थी)। निश्चित रूप से से आकस्मिक परिवर्तनों को रोकने चाहेंगे NOT NULLकरने के लिए NULL
एंड्री एम

8

क्लस्टर की गई प्राथमिक कुंजी और एक अद्वितीय क्लस्टर इंडेक्स के बीच में कोई अन्य अलग-अलग नहीं होता है जो अद्वितीय क्लस्टर किए गए इंडेक्स में NULL मान हो सकता है।

एक गैर-अद्वितीय क्लस्टर इंडेक्स में एक अद्वितीय होता है जिसे गैर-अद्वितीय मानों के लिए निपटाया जाता है।


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

1
वह सही है। गैर-क्लस्टर किए गए अनुक्रमणिका क्लस्टरिंग कुंजी को इंगित करेंगे, प्राथमिक कुंजी को नहीं। यदि प्राथमिक कुंजी एक गैर-क्लस्टर कुंजी है, तो यह सब एक स्तंभ पर विशिष्टता को लागू करता है जो NULL मूल्यों का समर्थन नहीं करता है ताकि इसे विदेशी कुंजी के माध्यम से उपयोग किया जा सके।
मर्डनी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.