यह वास्तव में अनुक्रमित और डेटा प्रकारों पर निर्भर करता है।
एक उदाहरण के रूप में स्टैक ओवरफ़्लो डेटाबेस का उपयोग करना, यह वही है जो उपयोगकर्ता तालिका जैसा दिखता है:
इसमें Id कॉलम पर PK / CX है। तो यह आईडी द्वारा क्रमबद्ध तालिका डेटा की संपूर्णता है।
इसके साथ ही एकमात्र इंडेक्स के रूप में, SQL को उस पूरी चीज़ (LOB कॉलम को सेंस) में पढ़ना पड़ता है अगर यह पहले से ही नहीं है।
DBCC DROPCLEANBUFFERS-- Don't run this anywhere near prod.
SET STATISTICS TIME, IO ON
SELECT u.Id
INTO #crap1
FROM dbo.Users AS u
आँकड़े समय और io प्रोफ़ाइल इस तरह दिखता है:
Table 'Users'. Scan count 7, logical reads 80846, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
SQL Server Execution Times:
CPU time = 2406 ms, elapsed time = 446 ms.
अगर मैं सिर्फ Id पर एक अतिरिक्त गैर-अनुक्रमित सूचकांक जोड़ता हूं
CREATE INDEX ix_whatever ON dbo.Users (Id)
अब मेरे पास एक बहुत छोटा सूचकांक है जो मेरी क्वेरी को संतुष्ट करता है।
DBCC DROPCLEANBUFFERS-- Don't run this anywhere near prod.
SELECT u.Id
INTO #crap2
FROM dbo.Users AS u
यहाँ प्रोफ़ाइल:
Table 'Users'. Scan count 7, logical reads 6587, physical reads 0, read-ahead reads 6549, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
SQL Server Execution Times:
CPU time = 2344 ms, elapsed time = 384 ms.
हम बहुत कम पढ़ते हैं और थोड़ा CPU समय बचा पाते हैं।
आपकी तालिका परिभाषा के बारे में अधिक जानकारी के बिना, मैं वास्तव में वह पुन: उत्पन्न करने का प्रयास नहीं कर सकता जो आप किसी भी बेहतर को मापने की कोशिश कर रहे हैं।
लेकिन आप कह रहे हैं कि जब तक उस एकल स्तंभ पर कोई विशिष्ट सूचकांक नहीं होगा, तब तक अन्य कॉलम / फ़ील्ड भी स्कैन किए जाएंगे? क्या यह केवल रोड़े की तालिकाओं के डिजाइन के लिए एक दोष है? अप्रासंगिक क्षेत्र क्यों स्कैन किए जाएंगे?
हां, यह पंक्तिस्टोर तालिकाओं के लिए विशिष्ट है। डेटा पेज पर पंक्ति द्वारा डेटा संग्रहीत किया जाता है। भले ही पृष्ठ का अन्य डेटा आपकी क्वेरी के लिए अप्रासंगिक हो, लेकिन उस पूरी पंक्ति> पृष्ठ> सूचकांक को स्मृति में पढ़ने की आवश्यकता है। मैं यह नहीं कहूंगा कि अन्य कॉलम "स्कैन" किए गए हैं, क्योंकि वे जिस पृष्ठ पर मौजूद हैं, वह क्वेरी के लिए प्रासंगिक उन पर एकल मान प्राप्त करने के लिए स्कैन किया गया है।
Ol 'फोनबुक उदाहरण का उपयोग करना: भले ही आप फ़ोन नंबर पढ़ रहे हों, जब आप पृष्ठ को चालू करते हैं, तो आप फ़ोन नंबर के साथ अंतिम नाम, पहला नाम, पता आदि बदल रहे हैं।