नोट: यह उत्तर एंटरप्राइज़-क्लास डेवलपमेंट को बड़े में संबोधित करता है ।
यह एक RDBMS मुद्दा है, न कि केवल SQL सर्वर, और व्यवहार बहुत दिलचस्प हो सकता है। एक के लिए, जबकि प्राथमिक कुंजी के लिए स्वचालित रूप से (विशिष्ट रूप से) अनुक्रमित होना आम है, यह पूर्ण नहीं है। ऐसे समय होते हैं जब यह आवश्यक होता है कि प्राथमिक कुंजी विशिष्ट रूप से अनुक्रमित न हो।
अधिकांश RDBMS में, एक अद्वितीय कुंजी स्वचालित रूप से एक प्राथमिक कुंजी पर बनाई जाएगी यदि कोई पहले से मौजूद नहीं है । इसलिए, आप प्राथमिक कुंजी कॉलम पर प्राथमिक कुंजी के रूप में घोषित करने से पहले अपना खुद का सूचकांक बना सकते हैं, फिर उस डेटाबेस का उपयोग तब किया जाएगा (यदि स्वीकार्य हो) जब आप प्राथमिक कुंजी घोषणा को लागू करते हैं। अक्सर, आप प्राथमिक कुंजी बना सकते हैं और इसके डिफ़ॉल्ट अद्वितीय इंडेक्स को बनाने की अनुमति दे सकते हैं, फिर उस कॉलम पर अपना स्वयं का वैकल्पिक इंडेक्स बनाएं, फिर डिफ़ॉल्ट इंडेक्स को छोड़ दें।
अब मज़ेदार भाग के लिए - आप एक अद्वितीय प्राथमिक कुंजी सूचकांक कब नहीं चाहते हैं? आप एक नहीं चाहते हैं, और एक को बर्दाश्त नहीं कर सकते हैं, जब आपकी तालिका सूचकांक के रखरखाव को बहुत महंगा बनाने के लिए पर्याप्त डेटा (पंक्तियाँ) प्राप्त करती है। यह हार्डवेयर, RDBMS इंजन, तालिका और डेटाबेस की विशेषताओं और सिस्टम लोड के आधार पर भिन्न होता है। हालाँकि, यह आम तौर पर तब प्रकट होना शुरू होता है जब एक तालिका कुछ मिलियन पंक्तियों तक पहुँच जाती है।
आवश्यक मुद्दा यह है कि अद्वितीयता सुनिश्चित करने के लिए इंडेक्स स्कैन में प्राथमिक कुंजी कॉलम परिणाम की एक पंक्ति या अपडेट को सम्मिलित करना। जब तक यह तालिका के प्रदर्शन पर हावी नहीं हो जाता, तब तक यह अद्वितीय सूचकांक स्कैन (या इसके समतुल्य आरडीबीएमएस में समतुल्य) अधिक महंगा हो जाता है।
मैंने कई बार दो अरब पंक्तियों, 8 टीबी भंडारण, और प्रति दिन चालीस मिलियन पंक्ति आवेषण के रूप में तालिकाओं के साथ इस मुद्दे से निपटा है। मुझे इसमें शामिल सिस्टम को फिर से डिज़ाइन करने का काम सौंपा गया था, जिसमें स्टेप वन के रूप में व्यावहारिक रूप से अद्वितीय प्राथमिक कुंजी इंडेक्स को शामिल करना था। वास्तव में, उस सूचकांक को गिराना केवल एक आउटेज से उबरने के लिए उत्पादन में आवश्यक था, इससे पहले कि हम भी एक नया स्वरूप के करीब हो जाएं। उस रीडिज़ाइन में प्राथमिक कुंजी की विशिष्टता सुनिश्चित करने और डेटा तक त्वरित पहुँच प्रदान करने के अन्य तरीके शामिल थे।