2011-02-16 22 views
6

पिछड़े स्कैन बहुत ही उच्च मैं/हे प्रतीक्षा के साथ एक सर्वर समस्या निवारण करते हैं, मैं वहाँ मैं का एक बहुत/हे प्रश्नों जो SELECT max(x) FROM t WHERE y = ? कर से आ रही है पर ध्यान दें।सूचकांक बनाम सूचकांक स्कैन

मेरे सूचकांक btree (x, y) है।

मुझे लगता है कि क्वेरी प्राप्त करने के लिए क्वेरी योजना इंडेक्स स्कैन पिछड़ा है। कि बुरा है? क्या मुझे इसके बारे में चिंता करनी चाहिए और शायद एक और इंडेक्स (उलट) जोड़ना चाहिए? या इस प्रकार के प्रश्नों के लिए उपयुक्त इंडेक्स बनाने का कोई बेहतर तरीका है?

उत्तर

12

नहीं, यह बुरा नहीं है, पहले सूचकांक पृष्ठ से शुरू होने में उतना ही समय लगता है क्योंकि यह अंतिम सूचकांक पृष्ठ से शुरू होगा। DESC का उपयोग करके, आप अवरोही सूचकांक बनाते समय "अंतर" देख सकते हैं।

एक सूचकांक (y, x) शायद इस प्रश्न के लिए बेहतर होगा।

+0

(y, x) पर एक इंडेक्स बनाना 10k से 300 तक क्वेरी लागत कम हो गई और क्वेरी समय कम हो गया। एक्स डीईएससी होने से कोई फर्क नहीं पड़ता है। पारितोषिक के लिए धन्यवाद! – ibz

+0

बहुत बढ़िया, इस महोदय के लिए धन्यवाद! इंडेक्स को स्थानांतरित करने के बाद मेरे पास एक समान समस्या और तुलनात्मक प्रदर्शन प्रभाव था। – TheDeadSerious

+0

https://stackoverflow.com/users/271959/frank-heikens क्या आप विस्तारित कर सकते हैं कि क्यों (y, x) पर एक इंडेक्स (x, y) पर इंडेक्स की तुलना में कम क्वेरी समय होगा। धन्यवाद। – nisanth074

2

सूचकांक पहले हल किया जाता है, न्यूनतम मान वाले। अधिकतम मान को खोजने के लिए, पिछड़ा इंडेक्स स्कैन पहले अधिकतम मान प्राप्त करेगा :)।

मुझे लगता है एक का चयन मिनट (एक्स) एक सामान्य सूचकांक स्कैन में परिणाम होगा, यह करता है?

+0

हाँ, मिनट (एक्स) सामान्य स्कैन करता है। – ibz

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