5

यदि कोई नॉनक्स्टर्ड प्राथमिक कुंजी बाधा निर्दिष्ट की गई है तो आप प्राथमिक कुंजी कॉलम के अलावा किसी कॉलम पर क्लस्टर्ड इंडेक्स बना सकते हैं। http://msdn.microsoft.com/en-us/library/ms186342.aspxप्राथमिक कुंजी हमेशा एसक्यूएल सर्वर में अनुक्रमित है?

तो ऊपर मुझसे कहा: मैं प्राथमिक कुंजी के अलावा अन्य स्तंभों पर एक क्लस्टर सूचकांक बना सकते हैं।

मुझे लगता है कि यह भी बताता है कि प्राथमिक कुंजी या तो एक गैर-प्राथमिक प्राथमिक कुंजी या क्लस्टर कुंजी होनी चाहिए। क्या यह संभव है कि एक प्राथमिक कुंजी अनुक्रमित नहीं है?

इतना ही नहीं:

जब आप एक अद्वितीय बाधा बनाने के लिए, एक अनूठा nonclustered अनुक्रमणिका डिफ़ॉल्ट रूप से एक अद्वितीय बाधा लागू करने के लिए बनाया जाता है। यदि तालिका पर क्लस्टर्ड इंडेक्स पहले से मौजूद नहीं है तो आप एक अद्वितीय क्लस्टर सूचकांक निर्दिष्ट कर सकते हैं।

क्या इसका मतलब है कि एक अनूठी बाधा को क्लस्टर्ड इंडेक्स या गैर-क्लस्टर इंडेक्स बनाना है?

उत्तर

12

क्या यह संभव है कि प्राथमिक कुंजी अनुक्रमित न हो?

नहीं, ऐसा नहीं है।

PRIMARY KEY पुलिस को किसी प्रकार की अनुक्रमणिका की आवश्यकता होती है, अन्यथा इसे प्रत्येक सम्मिलन (विशिष्टता सुनिश्चित करने के लिए) पर पूरी तालिका स्कैन करने की आवश्यकता होगी।

docs से:

डेटाबेस इंजन स्वचालित रूप से PRIMARY KEY बाधा की विशिष्टता आवश्यकता लागू करने के लिए एक अनूठा सूचकांक पैदा करता है। यदि क्लस्टर्ड इंडेक्स पहले से मौजूद नहीं है या नॉनक्लस्टर्ड इंडेक्स स्पष्ट रूप से निर्दिष्ट नहीं है, तो PRIMARY KEY बाधा को लागू करने के लिए एक अद्वितीय, क्लस्टरर्ड इंडेक्स बनाया गया है।


इसका मतलब यह एक अनूठा बाधा एक क्लस्टर सूचकांक या एक nonclustered अनुक्रमणिका बनाने के लिए है करता है?

हां, इसी कारण से।


PRIMARY KEY और UNIQUE, तार्किक अवधारणाओं रहे हैं, जबकि सूचकांक सिर्फ उन्हें कुशलता से लागू करने का एक पक्ष प्रभाव है। तो, कड़ाई से बोलते हुए, ALTER TABLE ADD CONSTRAINT UNIQUE और CREATE UNIQUE INDEX का मतलब अलग-अलग चीजें हैं।

यदि भविष्य में, कुछ उज्ज्वल सिर पॉली सिद्धांत या क्वांटम उलझन या शारीरिक स्तर पर विशिष्टता को लागू करने के लिए जो भी हो, उसका उपयोग करने का तरीका खोजता है, SQL Server 2155 बाधा को लागू करने के लिए इसे नियोजित कर सकता है, लेकिन इसे अभी भी बी बनाना होगा सूचकांक के लिए धन्यवाद।

+1

मुझे लगता है कि उत्तर प्रश्न शीर्षक के आधार पर भ्रामक हो सकता है। जवाब है हाँ एक पीके हमेशा अनुक्रमित है। – JonH

+0

बहुत बेहतर धन्यवाद। – JonH

1

लघु जवाब: नहीं,

एसक्यूएल सर्वर में हर तालिका केवल एक संकुल अनुक्रमणिका चाहिए। क्लस्टर इंडेक्स से अन्य इंडेक्स (गैर-क्लस्टर) का उपयोग।प्राथमिक कुंजी आमतौर पर क्लस्टर सूचकांक है। लेकिन प्राथमिक कुंजी हमेशा विदेशी कुंजी के विपरीत अनुक्रमित होती है।

http://www.sqlfiddle.com/#!6/972f0/1 
+0

* प्रत्येक तालिका ... केवल एक क्लस्टर सूचकांक होना चाहिए * - प्रत्येक तालिका ** ** कभी भी एक से अधिक क्लस्टर्ड इंडेक्स नहीं हो सकती है! यह * * प्रतिबंध नहीं होना चाहिए - यह एक निश्चित ** ** प्रतिबंध नहीं कर सकता है। एक से अधिक क्लस्टर सूचकांक रखने का कोई तरीका नहीं है। –

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