Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

क्लस्टर्ड बनाम नॉन-क्लस्टर्ड

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

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

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर 2008 में कई पंक्तियों को एक स्ट्रिंग में कैसे सम्मिलित करें?

  2. SQL सर्वर में एक महीने में दिनों की संख्या कैसे निर्धारित करें?

  3. संग्रहीत प्रक्रिया में पैरामीटर के रूप में डीईएससी और एएससी

  4. SQL सर्वर मेमोरी-ऑप्टिमाइज़्ड टेबल्स में इंडेक्स का उपयोग करना

  5. कौन सा तेज COALESCE या ISNULL है?