2011-07-11 24 views
6

में विदेशी कुंजी पर इंडेक्स SQL ​​Server 2008 में किसी विदेशी कुंजी में कोई अनुक्रमणिका जोड़ने की आवश्यकता है या यह डिफ़ॉल्ट रूप से संभाला जाता है। मेरी कई तालिकाओं में मेरे पास एक एफके है जो उपयोगकर्ता खाता तालिका को इंगित करता है और अधिकांश चयन इस WHERE Account_FK = id के साथ किए जाते हैं। इसलिए मुझे उम्मीद है कि इंडेक्स एक त्वरित प्रदर्शन जीत सकता है।SQL सर्वर 2008

उत्तर

4

एक नियम के रूप में, आप अपने सभी JOIN कुंजी उन पर अनुक्रमित करना चाहते हैं, तो हाँ एक सूचकांक जोड़ें।

यदि यह एक समग्र कुंजी है तो सभी प्रासंगिक फ़ील्ड को इंडेक्स कुंजी सूची में उचित क्रम में रखना सुनिश्चित करें।

मेरे ज्ञान के लिए SQL सर्वर में एक बार इंडेक्स स्वचालित रूप से बनाया जाता है जब आप एक हीप (गैर-अनुक्रमित तालिका) में प्राथमिक कुंजी जोड़ते हैं - पीके को क्लस्टरर्ड इंडेक्स कुंजी के रूप में स्वचालित रूप से असाइन किया जाता है; या, जैसा कि डेमियन नीचे बताता है, जब आप UNIQUE फ़ील्ड या फ़ील्ड के सेट में बाधा डालते हैं।

+1

प्राथमिक कुंजी और अद्वितीय बाधाएं दोनों एक इंडेक्स स्वचालित रूप से जोड़ती हैं (बाधा के समान नाम के साथ - यह कैसे कार्यान्वित किया जाता है), और यह क्लस्टर या गैर-क्लस्टर किया जा सकता है (जैसा कि आप कहते हैं, डिफ़ॉल्ट है एक क्लस्टर सूचकांक बनाएं यदि यह एक पीके बाधा है और अभी तक कोई क्लस्टर इंडेक्स नहीं है)। –

+0

@ डेमियन - अच्छा बिंदु, 'अद्वितीय' बाधा के बारे में भूल गया। – JNK

3

एक नहीं तो स्पष्ट FK के लिए एक सूचकांक से जोड़ने के लिए कारण है जब आप मास्टर तालिका (अपने उपयोगकर्ता खाते तालिका) में एक पंक्ति को हटाना चाहते हैं के लिए है। एसक्यूएल सर्वर प्रत्येक एफके संबंध के लिए एक जांच करता है यह देखने के लिए कि क्या कोई पंक्तियां हैं जो हटाने को रोकती हैं, और यह जांच बाल तालिका में एफके कॉलम पर एक इंडेक्स के साथ बहुत तेज है।