से अधिक महंगा क्यों बनता है मेरे पास इंडेक्स स्कैन/सीक के बारे में एक बुनियादी सवाल है। सूचकांक स्कैन प्रभावी होता है जब बड़ी संख्या में पंक्तियां प्राप्त की जाती हैं। यह सूचकांक स्कैन लागत पंक्तियों की संख्या के विपरीत आनुपातिक है। पंक्तियों की संख्या कम महंगी होती है, इसलिए क्वेरी बन जाती है क्योंकि इसे सभी पृष्ठों को स्कैन करना होता है जिसके परिणामस्वरूप अधिक आईओ होता है।इंडेक्स स्कैन इंडेक्स स्कैन
मैंने इस कारण की खोज की है कि स्कैन की तुलना में अधिक महंगा क्यों बनना है, लेकिन मुझे यह कारण नहीं मिल रहा है कि तलाश महंगा क्यों हो।
जो मैं उलझन में हूं वह इंडेक्स की तलाश के साथ है। अधिक संख्या में पंक्तियों के साथ सूचकांक की तलाश महंगा क्यों हो जाती है। इंडेक्स की तलाश हमेशा स्कैन की तुलना में तेज़ और कुशल होगी क्योंकि यह पंक्तियों वाले पृष्ठों को सीधे छूती है। तो यहां तक कि बड़ी संख्या में पंक्तियों के साथ सूचकांक की तलाश हमेशा इंडेक्स स्कैन की तुलना में प्रभावी होनी चाहिए। लेकिन ऐसा नहीं होता है। मैं जानना चाहता हूं कि क्यों कुछ बिंदु तलाश महंगा हो जाता है।
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)
[यह] हो सकता है (http://blog.sqlauthority.com/2007/03/30/sql-server-index-seek-vs-index-scan-table-scan/) मदद करता है !!! – Praveen
खोज की योग्यता ओवरहेड कारण हो सकता है – Ian
सूचकांक में क्या शामिल है? बस आईडी? क्या यह क्लस्टर्ड इंडेक्स है? यदि नहीं, तो अन्य कॉलम प्राप्त करने के लिए आवश्यक कुंजी लुकअप प्रदर्शन हिट का कारण होगा। – strickt01