2009-01-13 46 views

उत्तर

40

क्षमा करें, यह स्पष्ट नहीं है कि आप क्या पूछ रहे हैं।

आप पूछ रहे हैं, यह

SELECT product, sum(quantity) FROM receipts 
GROUP BY product 

के रूप में एक क्वेरी जैसे तेजी लाने होगा यदि आप मात्रा पर एक सूचकांक जोड़ा?

यदि यह सवाल है, तो उत्तर नहीं है। आम तौर पर, इंडेक्स उपयोगी होते हैं जब आपको कई पंक्तियों को खोजने की आवश्यकता होती है; यहां आपको सभी पंक्तियों की आवश्यकता है, इसलिए एक सूचकांक मदद नहीं करता है।

एक अस्पष्ट अपवाद है (जो शायद ही कभी लागू होता है, अधिकांश डीबी अनुकूलक शायद इस चाल को लागू करने से परेशान नहीं हैं)। आपकी क्वेरी

SELECT sum(foo) FROM bar 

, जहां foo पर एक सूचकांक है, और बार कई कॉलम के साथ एक मेज है होना करने के लिए होता है, वह पूर्ण सूचकांक में पढ़ने के लिए संभव है, अगर आप पढ़ तुलना में एक छोटे हिट उठाने अंतर्निहित तालिका, और सीधे सूचकांक से जवाब प्राप्त करें - कभी भी "असली" तालिका को छूने के लिए कभी नहीं! हालांकि, यह एक दुर्लभ मामला है, और आप यह जांचना चाहेंगे कि आपका अनुकूलक इस पर भरोसा करने से पहले ऐसा करने के लिए जानता है।

+1

+1 के साथ मामले के मुकाबले तेजी से योग कर रहा है क्योंकि यह इंडेक्स का एक दिलचस्प उपयोग है। – NotMe

+1

+1 अच्छी सलाह: अनुकूलक द्वारा उत्पादित निष्पादन योजना को देखने के लिए। –

+0

क्या यह हमेशा सच है - यह सूचकांक एसयूएम प्रदर्शन को प्रभावित नहीं कर सकता है?क्या होगा यदि हम फ़िल्टर इंडेक्स का उपयोग कर रहे हैं जहां यह इंगित करता है कि मान शून्य नहीं है? और जब हम एसयूएम को केवल विशेष मूल्यों के WHERE क्लॉज का उपयोग कर रहे हैं, तो क्या इंडेक्स मदद करेगा? – gotqn

7

नहीं। इंडेक्स कितने चेक की आवश्यकता है सीमित करके खोजों में सुधार करते हैं। एक समग्र कार्य (गिनती, अधिकतम, न्यूनतम, योग, औसत) को कॉलम में सभी प्रविष्टियों के माध्यम से चलाने के लिए है।

+0

लेकिन यदि वे सभी कॉलम इंडेक्स में मौजूद हैं, तो वास्तविक तालिका को एक्सेस नहीं किया जाना चाहिए, जिससे सूचकांक –

4

यदि आप तेजी से सारांश बनाना चाहते हैं, तो आप परिणाम को पूर्व-भौतिक बना सकते हैं। ओरेकल पर, Materialized Views का उपयोग करें, एमएस एसक्यूएल पर Indexed Views का उपयोग करें।

अपने विशिष्ट प्रश्न पर "एक स्तंभ है कि अभिव्यक्त किया जा रहा है के लिए एक सूचकांक बनाने है कोई सूचकांक की तुलना में तेजी है?", इस सवाल का जवाब नहीं।

अपने प्रश्न का उत्तर स्पेंसर्स जवाब पर स्थित है:

"एक समग्र कार्य (गिनती, अधिकतम, न्यूनतम, योग, औसत) को कॉल किए जाने वाले कॉलम में सभी प्रविष्टियों के माध्यम से चलाना पड़ता है।"

स्पेंसर के उत्तर में कॉलम के संदर्भ को स्पष्ट किया। उसका जवाब फिर भी सही है।

0

यदि सूचकांक कवर हो रहा है, तो यह आमतौर पर तेज़ होगा। सूचकांक में संख्या बनाम तालिका में स्तंभों की संख्या के बीच अंतर से कितनी तेजी से निर्धारित किया जाएगा। इसके अलावा, यदि फ़िल्टरिंग मानदंड हैं तो यह तेज़ हो सकता है।

चयन productid, योग (मात्रा) प्राप्तियों से कहां productid द्वारा productid = 1 ग्रुप

मेरे प्रश्नों में से एक:

0

मैं अनुक्रमण जब इस क्वेरी का उपयोग कर जहां में किसी स्तंभ (यहां productId) में मदद करता है पाया एक बार इंडेक्स जोड़ने के बाद 45 सेकंड से लगभग तुरंत चला गया।

+1

एक उत्पाद आईडी के साथ, क्या आपको SELECT सूची में उत्पाद आईडी की आवश्यकता है? –

+1

हाँ लेकिन स्क्वायरकॉग ने कहा, उत्पादक को एक इंडेक्स जोड़ने से मदद मिलती है क्योंकि आप उत्पादक के आधार पर पंक्तियां पा रहे हैं। प्रश्न, आपके मामले में, यह है कि मात्रा पर एक सूचकांक जोड़ने से मदद मिलेगी – alex9311

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