2016-03-07 18 views
5

से अधिक महंगा क्यों बनता है मेरे पास इंडेक्स स्कैन/सीक के बारे में एक बुनियादी सवाल है। सूचकांक स्कैन प्रभावी होता है जब बड़ी संख्या में पंक्तियां प्राप्त की जाती हैं। यह सूचकांक स्कैन लागत पंक्तियों की संख्या के विपरीत आनुपातिक है। पंक्तियों की संख्या कम महंगी होती है, इसलिए क्वेरी बन जाती है क्योंकि इसे सभी पृष्ठों को स्कैन करना होता है जिसके परिणामस्वरूप अधिक आईओ होता है।इंडेक्स स्कैन इंडेक्स स्कैन

मैंने इस कारण की खोज की है कि स्कैन की तुलना में अधिक महंगा क्यों बनना है, लेकिन मुझे यह कारण नहीं मिल रहा है कि तलाश महंगा क्यों हो।

जो मैं उलझन में हूं वह इंडेक्स की तलाश के साथ है। अधिक संख्या में पंक्तियों के साथ सूचकांक की तलाश महंगा क्यों हो जाती है। इंडेक्स की तलाश हमेशा स्कैन की तुलना में तेज़ और कुशल होगी क्योंकि यह पंक्तियों वाले पृष्ठों को सीधे छूती है। तो यहां तक ​​कि बड़ी संख्या में पंक्तियों के साथ सूचकांक की तलाश हमेशा इंडेक्स स्कैन की तुलना में प्रभावी होनी चाहिए। लेकिन ऐसा नहीं होता है। मैं जानना चाहता हूं कि क्यों कुछ बिंदु तलाश महंगा हो जाता है।

select id,name,col1,col2 
from TableA -- Will result in index scan. Table has 10000 rows with clustered index on ID column. Query has covering index. 

select id,name,col1,col2 
where ID between 1 and 10 
from TableA -- Optimizer Will use index Seek. 

अब क्यों नीचे दिए गए क्वेरी महंगा हो जाता है जब सूचकांक की तलाश पर मजबूर किया जाता है करता है -

select id,name,col1,col2 
from TableA with (forceseek) 
+0

[यह] हो सकता है (http://blog.sqlauthority.com/2007/03/30/sql-server-index-seek-vs-index-scan-table-scan/) मदद करता है !!! – Praveen

+0

खोज की योग्यता ओवरहेड कारण हो सकता है – Ian

+0

सूचकांक में क्या शामिल है? बस आईडी? क्या यह क्लस्टर्ड इंडेक्स है? यदि नहीं, तो अन्य कॉलम प्राप्त करने के लिए आवश्यक कुंजी लुकअप प्रदर्शन हिट का कारण होगा। – strickt01

उत्तर

2

कारण है कि क्लस्टर सूचकांक की शोध से सूचकांक स्कैन है, क्योंकि सूचकांक बी पेड़ सही पढ़ने शुरू होता है की तलाश महंगा है रूट नोड्स से लीफ नोड्स तक। इसमें लीफ नोड्स के अंदर इंडेक्स और पेज पढ़ना शामिल है। इसलिए अधिक आईओ में परिणाम। तो जब चयनकता कम अनुकूलक इंडेक्स खोज के बजाय इंडेक्स स्कैन चुनता है। खोज केवल तभी बेहतर होती है जब रिकॉर्ड लौटाए जाते हैं 2 से 3% से अधिक नहीं होते हैं।

संबंधित मुद्दे