2010-09-27 10 views
10

मेरे सोच है कि अगर मैं अपने ands कि उन है कि बस कुछ ही को फ़िल्टर से पहले पंक्तियों की एक बड़ी संख्या को फ़िल्टर कर दिया, मेरी क्वेरी तेज चलाना चाहिए के बाद से उस चयन सेट में काफी छोटा है है और बयान के बीच।आदेश कहाँ खंड सबसे बड़ी के लिए प्रदर्शन

लेकिन की और एक एसक्यूएल वक्तव्य वास्तव में की कहां खंड में आदेश एसक्यूएल कि अधिक या इंजन इस के लिए पहले से ही अनुकूलित कर रहे हैं के प्रदर्शन को प्रभावित करता है?

उत्तर

18

यह वास्तव में अनुकूलक पर निर्भर करता है।

यह चाहिए नहीं बात है क्योंकि यह अनुकूलक का काम है इष्टतम आप इसे कैसे का वर्णन की परवाह किए बिना आपकी क्वेरी को चलाने के लिए जिस तरह से यह पता लगाने की।

अभ्यास में, कोई अनुकूलक ताकि आप उस फिर से आदेश देने खंड विशिष्ट क्वेरी के लिए एक फर्क पड़ता है मिल सकती है एकदम सही है। निश्चित रूप से पता करने का एकमात्र तरीका आप के लिए यह काम करने के लिए अनुकूलित कर रहे हैं अपनी खुद की स्कीमा, डेटा आदि

+0

वहाँ एक प्रश्न मैं एक Ilike बयान के साथ चल रहा हूँ और और खंड करता है इस मामले के आदेश है। 'मेज से * का चयन करें जहां x Ilike 'abcde' और समय> = 2015-12-28' 10x की तुलना में धीमी है' तालिका से चयन * जहां समय> = 2015/12/28 और एक्स Ilike 'abcde'' –

6

अधिकांश एसक्यूएल इंजन के साथ यह अपने आप को परीक्षण करने के लिए है। हालांकि, मुझे ऐसी स्थितियां मिली हैं जिनमें सबसे बड़ी तालिका को कम करने की कोशिश कर रहा है, इससे पहले कोई बड़ा अंतर हो सकता है - इससे कोई चोट नहीं आती है!

1

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

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

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