2012-05-22 19 views
31

मैं एसक्यूएल सर्वर 2008 में एक डेटाबेस बनाने रहा हूँ,डेटाबेस: प्राथमिक कुंजी, क्लस्टर किया या Nonclustered

CREATE TABLE Users 
(
    U_Id INT NOT NULL 
    FirstName VARCHAR(50) NOT NULL, 
    LastName VARCHAR(50) NOT NULL, 
    Email VARCHAR(200) 
    Password VARCHAR(50) 
) 

मैं U_Id प्राथमिक कुंजी बनाना चाहते हैं। मैं पूछने के लिए

CONSTRAINT pk_UserID PRIMARY KEY (U_Id) 

इस

CONSTRAINT pk_UserID PRIMARY KEY CLUSTERED (U_Id) 

और इस

CONSTRAINT pk_UserID PRIMARY KEY NONCLUSTERED (U_Id) 

के बीच अंतर जब प्रत्येक उपयोग करने के लिए क्या है चाहते हैं?

मैंने कुछ लेख पढ़ा लेकिन यह अभी भी मेरे लिए अस्पष्ट है। क्या कोई मुझे त्वरित स्पष्टीकरण दे सकता है?

उत्तर

36

निम्नलिखित बयान:

CONSTRAINT pk_UserID PRIMARY KEY (U_Id) 

के रूप में ही है इस एक:

CONSTRAINT pk_UserID PRIMARY KEY CLUSTERED (U_Id) 

आप केवल तालिका डेटा शारीरिक इंडेक्सों का एक, और डिफ़ॉल्ट रूप से द्वारा आदेश दिया है सकते हैं कि इंडेक्स प्राथमिक कुंजी के लिए उपयोग किया जाता है (प्राथमिक कुंजी अद्वितीय बाधा हमेशा एक सूचकांक द्वारा समर्थित है)।

आप तालिका डेटा की को छोड़ने के लिए चाहते हैं, तो कुछ अन्य सूचकांक के अनुसार संग्रहीत करने के लिए तो आप के साथ प्राथमिक कुंजी बनाने चाहिए:

CONSTRAINT pk_UserID PRIMARY KEY NONCLUSTERED (U_Id) 

और फिर साथ क्लस्टर सूचकांक बनाने के लिए:

CREATE CLUSTERED INDEX ix_Email ON Users (Email); 
+3

बस ध्यान रखें कि आपके द्वारा बनाए गए गैर-क्लस्टर किए गए इंडेक्स में हमेशा क्लस्टर-इंडेक्स में डेटा शामिल होगा (क्योंकि तालिका में वास्तविक डेटा पंक्ति कैसे मिलती है)। [माइक्रोसॉफ्ट डॉक्स] (http://msdn.microsoft.com/en-us/library/ms177484.aspx) तो ऐसा नहीं लगता कि आप एक बड़े/विस्तृत इंडेक्स को क्लस्टर्ड-इंडेक्स बनाकर स्थान बचाएंगे जब तक कि आप टेबल पर कोई अन्य अनुक्रमणिका नहीं है। – Granger

+1

प्राथमिक कुंजी एक पंक्ति का पहचानकर्ता है। यह अद्वितीय होना चाहिए और शून्य नहीं होना चाहिए। क्लस्टरर्ड इंडेक्स एसक्यूएल को डिस्क पर डेटा स्टोर करने का तरीका बताता है। इस सूचकांक द्वारा निर्दिष्ट वास्तविक डेटा पंक्तियों को क्रम में संग्रहीत किया जाता है। चूंकि इसमें डिस्क पर डेटा संग्रहीत किया जाता है, इस पर डेटा भी शामिल है, क्लस्टर इंडेक्स कुंजी प्रत्येक इंडेक्स में संग्रहीत होती है। लगभग सभी मामलों में यह वही होना सर्वोत्तम है। और प्राथमिक कुंजी को पहचानकर्ता होने के लिए लगभग हमेशा सर्वोत्तम होता है ताकि डेटा को क्रमशः डिस्क पर संग्रहीत किया जा सके। – brianfeucht

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

  • कोई संबंधित समस्या नहीं^_^