फ्रेडरिक इसे अच्छी तरह से बताता है, और वास्तव में किम्बर्ली ट्रिप भी यही उपदेश देता है:क्लस्टरिंग कुंजी स्थिर होनी चाहिए (कभी नहीं बदलती), कभी बढ़ती (पहचान आईएनटी), छोटी और अनूठी।
आपके परिदृश्य में, मैं क्लस्टरिंग कुंजी को VARCHAR(80) कॉलम के बजाय BIGINT कॉलम पर रखना चाहूंगा।
सबसे पहले, BIGINT कॉलम के साथ, विशिष्टता को लागू करना काफी आसान है (यदि आप स्वयं को लागू नहीं करते हैं और विशिष्टता की गारंटी नहीं देते हैं, तो SQL सर्वर आपकी प्रत्येक पंक्ति में 4-बाइट "अद्वितीय" जोड़ देगा) और यह बहुत है VARCHAR(80) से औसतन छोटा।
आकार इतना महत्वपूर्ण क्यों है? क्लस्टरिंग कुंजी को प्रत्येक और आपके प्रत्येक गैर-संकुल अनुक्रमणिका में भी जोड़ा जाएगा - इसलिए यदि आपके पास बहुत सी पंक्तियां और बहुत से गैर-संकुल अनुक्रमणिकाएं हैं, तो 40-80 बाइट बनाम 8 बाइट होने पर जल्दी से एक बड़ा बना सकते हैं अंतर।
इसके अलावा, एक और प्रदर्शन युक्ति:तथाकथित बुकमार्क लुकअप से बचने के लिए (वास्तविक डेटा लीफ पृष्ठों में क्लस्टरिंग कुंजी के माध्यम से आपके गैर-क्लस्टर इंडेक्स में एक मूल्य से), SQL सर्वर 2005 ने "शामिल कॉलम" की धारणा पेश की है। आपके गैर-संकुल अनुक्रमणिका में। वे बेहद मददगार हैं, और अक्सर अनदेखी की जाती है। यदि आपके प्रश्नों को अक्सर इंडेक्स फ़ील्ड और डेटाबेस से केवल एक या दो अन्य फ़ील्ड की आवश्यकता होती है, तो "कवरिंग इंडेक्स" को प्राप्त करने के लिए उन्हें शामिल करने पर विचार करें। फिर से - किम्बर्ली ट्रिप का उत्कृष्ट लेख देखें - वह SQL सर्वर अनुक्रमण देवी है! :-) और वह उस सामान को मुझसे बेहतर तरीके से समझा सकती है...
तो संक्षेप में:अपनी क्लस्टरिंग कुंजी को एक छोटे, स्थिर, अद्वितीय कॉलम पर रखें - और आप ठीक काम करेंगे!
मार्क