क्लस्टर्ड बनाम गैर-क्लस्टर इंडेक्स के बीच अंतर यह है कि क्लस्टर इंडेक्स डेटाबेस में पंक्तियों के भौतिक क्रम को निर्धारित करता है . दूसरे शब्दों में, संकुल अनुक्रमणिका को PersonId
. पर लागू करना इसका मतलब है कि पंक्तियों को PersonId
. द्वारा भौतिक रूप से क्रमबद्ध किया जाएगा तालिका में, इस पर एक अनुक्रमणिका खोज को सीधे पंक्ति में जाने की अनुमति देता है (बजाय एक गैर-संकुल अनुक्रमणिका के, जो आपको एक अतिरिक्त चरण जोड़ते हुए पंक्ति के स्थान पर निर्देशित करेगा)।
उस ने कहा, यह असामान्य है प्राथमिक कुंजी के लिए क्लस्टर इंडेक्स नहीं होना चाहिए, लेकिन अनसुना नहीं होना चाहिए। आपके परिदृश्य के साथ समस्या वास्तव में आप जो मान रहे हैं उसके विपरीत है:आप चाहते हैं अद्वितीय क्लस्टर इंडेक्स में मान, डुप्लीकेट नहीं। क्योंकि संकुल सूचकांक पंक्ति के भौतिक क्रम को निर्धारित करता है, यदि सूचकांक एक गैर-अद्वितीय कॉलम पर है, तो सर्वर को उन पंक्तियों में पृष्ठभूमि मान जोड़ना होगा जिनके पास डुप्लिकेट कुंजी मान है (आपके मामले में, समान पंक्तियों वाली कोई भी पंक्तियाँ) PersonId
) ताकि संयुक्त मान (कुंजी + पृष्ठभूमि मान) अद्वितीय हो।
मैं केवल यही सुझाव दूंगा कि नहीं एक सरोगेट कुंजी का उपयोग करना (आपका CourtOrderId
) प्राथमिक कुंजी के रूप में कॉलम, लेकिन इसके बजाय PersonId
. की मिश्रित प्राथमिक कुंजी का उपयोग करें और कुछ अन्य विशिष्ट-पहचान वाले स्तंभ या स्तंभों का समूह। यदि यह संभव नहीं है (या व्यावहारिक नहीं है), तो क्लस्टर इंडेक्स को CourtOrderId
पर रखें। .