हमारे पास एक बड़ी तालिका है [MyTable]
जिसमें वर्तमान में दोनों हैं Primary Key
, और एक Unique Non Clustered Index
ही कॉलम पर ( [KeyColumn]
)। यू एनसी इंडेक्स में अतिरिक्त कवरिंग कॉलम भी हैं।
एक ही कॉलम पर पीके और यूनिक एनसी इंडेक्स दोनों ही बेमानी लगते हैं, इसलिए मैं प्राइमरी की को डिलीट करने पर विचार कर रहा था और इसके बजाय रेफरेंशियल इंटीग्रिटी के लिए यूनीक नॉन क्लस्टर्ड इंडेक्स का इस्तेमाल कर रहा था।
ध्यान दें कि तालिका पूरी तरह से किसी अन्य स्तंभ द्वारा क्लस्टर की गई है।
यानी तो हमारे पास है:
ALTER TABLE [MyTable]
ADD CONSTRAINT [PK_MyTable]
PRIMARY KEY NONCLUSTERED ([KeyColumn])
GO
तथा
CREATE UNIQUE NONCLUSTERED INDEX [IX_MyTable_SomeIndex]
ON [MyTable] ([KeyColumn])
INCLUDE ([Column1], [Column2])
GO
जहां तक मुझे पता है, एक प्राथमिक कुंजी में कवरिंग कॉलम जोड़ना संभव नहीं है, इसलिए मैं करना चाहता हूं:
- पर निर्भर विदेशी कुंजी बाधाओं को छोड़ दें
MyTable.KeyColumn
- प्राथमिक कुंजी को
MyTable.KeyColumn
पूरी तरह से छोड़ दें - तालिका में विदेशी कुंजियों को फिर से जोड़ें (यानी आरआई के माध्यम से लागू किया जाएगा
MyTable.KeyColumn
)
इसका एकमात्र अर्थ यह है कि मैं ऐसा करने के बारे में सोच सकता हूं कि हमें अपने ईआरडी आरेखों पर दृश्य कुंजी प्रतीक नहीं मिलेगा, और यह भी शामिल है कि (पत्ती) सूचकांक घनत्व शामिल कॉलमों के कारण कम होगा।
मैंने /programming/487314/primary-key-or-unique-index पढ़ा है और यह करने की ईमानदारी और प्रदर्शन पहलुओं से खुश हूं।
मेरा प्रश्न है: क्या यह दृष्टिकोण त्रुटिपूर्ण है?
संपादित करें जो मैं पूरा करने की कोशिश कर रहा हूं : प्रदर्शन अनुकूलन और वसंत सफाई । पीके या एक इंडेक्स को हटाने से, मेरे इंडेक्स के लिए कम पृष्ठों की आवश्यकता होगी = तेजी से लिखता है, साथ ही रखरखाव / परिचालन लाभ, यानी डीफ़्रैग्मेन्ट रखने के लिए एक कम इंडेक्स भी।
इस पर कुछ पृष्ठभूमि डालने के लिए, मैंने पहले कभी टेबल नहीं ली है जिसे पीके के बिना संदर्भित किया जा रहा है। हालांकि, तथ्य यह है कि स्तंभों को कवर करने के साथ एक एनसी सूचकांक तालिका में जोड़ा गया था, इसका मतलब है कि मुझे अपनी सोच को अनुकूलित करने की आवश्यकता है।