performance - What is the advantage of using an INCLUDE column with a SQL Server index? -
नॉनक्लाइस्टर इंडेक्स index_name चालू & lt; ऑब्जेक्ट & gt; (स्तंभ [एएससी | डीईएससी] [, ... एन]) [शामिल (स्तंभ_नाम [, ... एन])] [WHERE & lt; filter_predicate & gt; ] उपरोक्त वाक्यविन्यास में हम इन-इन में गैर-प्रमुख कॉलम निर्दिष्ट करेंगे। गैर-कुंजी कॉलम निर्दिष्ट करने में क्या लाभ है?
मान लें कि आपके पास ऐसा कर्मचारी तालिका है, जैसे:
बनाएं टेबल कर्मचारी (कर्मचारी की पहचान INT पहचान (1,1) प्राथमिक कुंजी, अंतिम नाम VARCHAR (50), प्रथम नाम VARCHAR (50), HireDate DATETIME, वेतन Decimal) आप प्राथमिक क्लस्टर कुंजी होगा नाम से कर्मचारियों को ढूँढने में सक्षम होने के लिए कर्मचारी नाम पर संभवत: एक गैर-क्लस्टर्ड कुंजी (लास्टलाइम, फर्स्टनेम)।
बनाएँ इंडेक्स नाम पर कर्मचारी (अंतिम नाम एएससी, प्रथम नाम एएससी) < / कोड> अब अगर आपको "जो मर्फी" ढूंढने और उसकी किराया की तारीख और वेतन प्राप्त करने की आवश्यकता है, तो क्या होता है एक सूचकांक आपकी नाम-आधारित गैर-क्लस्टर वाली कुंजी (जो कि अच्छा है) में है, लेकिन तो किराया तिथि और वेतन को प्राप्त करने के लिए, SQL मर्कफी के लिए रिकॉर्ड प्राप्त करने के लिए SQL सर्वर को वास्तविक तालिका डेटा में एक तथाकथित बुकमार्क लुकअप करने की आवश्यकता है यह सबसे अधिक संभावना होगा कि एक या कई भौतिक डिस्क एक्सेस (जो प्रदर्शन के मामले में खराब है)।
फिर भी: यदि आपका नाम-आधारित गैर-क्लस्टर वाला इंडेक्स "इन्सुल्ड (हायरडेट, पगार)" को भी निर्दिष्ट करता है:
कर्मचारी का नाम इंडेक्स बनाएं (अंतिम नाम एएससी, प्रथम नाम एएससी) शामिल है (किराया, वेतन)
फिर एसक्यूएल सर्वर एक बार किया जाता है जब वह जो मर्फी गैर-क्लस्टर नाम इंडेक्स में -> आपकी क्वेरी को पूरा करने के लिए सभी फ़ील्ड गैर-क्लस्टर वाले इंडेक्स में हैं, इसलिए डिस्क-गहन बुकमार्क लुकअप करने की आवश्यकता नहीं है और आपके प्रश्न संभावित रूप से बहुत तेज़ होंगे।
इनक्लूड कॉलम के निचले हिस्से को गैर-क्लस्टर अनुक्रमित द्वारा डिस्क-स्पेस की जरूरत बढ़ जाती है, क्योंकि उनके पत्ते-स्तर नोड्स में शामिल कॉलम होंगे। यह गति और आकार (सामान्य रूप से) के बीच एक ट्रेड-ऑफ है।
मार्क
Comments
Post a Comment