कैसा दिखेगा मान लेते हैं आप एक कर्मचारी तालिका इसलिए की तरह करते हैं:
CREATE TABLE Employee(EmployeeID INT IDENTITY(1,1) PRIMARY KEY,
LastName VARCHAR(50),
FirstName VARCHAR(50),
HireDate DATETIME,
Salary DECIMAL)
आप EmployeeID पर प्राथमिक क्लस्टर कुंजी है, और संभवतः नाम से कर्मचारियों को खोजने में सक्षम होने के लिए (अंतिम नाम, फर्स्टनाम) पर एक गैर-क्लस्टर कुंजी।
CREATE INDEX NameIndex ON Employee(LastName ASC, FirstName ASC)
अब अगर आप "जो मर्फी" खोजने के लिए और अपने किराये की तारीख और वेतन को पुनः प्राप्त करने की जरूरत है, क्या होता है एक सूचकांक आपके नाम के आधार पर गैर-क्लस्टर कुंजी में की तलाश (जो अच्छा है) है, लेकिन फिर क्रम में किराया दिनांक और वेतन लाने के लिए, SQL सर्वर को जो मर्फी के लिए रिकॉर्ड प्राप्त करने के लिए वास्तविक तालिका डेटा में एक तथाकथित बुकमार्क लुकअप करने की आवश्यकता है। यह संभवतः एक या कई भौतिक डिस्क का उपयोग करेगा (जो प्रदर्शन के मामले में खराब है)।
हालांकि: अगर आपका नाम आधारित गैर क्लस्टर सूचकांक भी निर्दिष्ट करता है "में शामिल हैं (HireDate, वेतन)":
CREATE INDEX NameIndex ON Employee(LastName ASC, FirstName ASC)
INCLUDE (HireDate, Salary)
तो एसक्यूएल सर्वर से किया जाता है एक बार यह गैर क्लस्टर नाम पर जो मर्फी ऊपर देखा है अनुक्रमणिका -> आपकी क्वेरी को संतुष्ट करने के लिए सभी फ़ील्ड गैर-क्लस्टर इंडेक्स में हैं, इसलिए डिस्क-गहन बुकमार्क लुकअप करने की कोई आवश्यकता नहीं है और आपके प्रश्न संभावित रूप से बहुत तेज़ होंगे।
INCLUDE कॉलम का नकारात्मक हिस्सा गैर-क्लस्टर इंडेक्स द्वारा डिस्क-स्पेस की आवश्यकता में वृद्धि हुई है, क्योंकि उनके पत्ते-स्तर नोड्स में शामिल कॉलम होंगे। यह गति और आकार (सामान्य के रूप में) के बीच एक व्यापार-बंद है।
मार्क
स्रोत
2009-05-04 05:13:39
कारण है कि यह क्लस्टर सूचकांक – Andomar