मुझे यह भी लगता है कि आप ओरेकल का उपयोग कर रहे हैं। और मैं यह भी अनुशंसा करता हूं कि आप स्टार्टर्स के लिए व्याख्या योजना वेब पेज देखें। अनुकूलन के लिए बहुत कुछ है, लेकिन यह सीखा जा सकता है।
कुछ टिप्स का पालन करें:
सबसे पहले, जब कोई कार्य आप अनुकूलन करने के लिए, वे लगभग हमेशा अंतिम प्रदर्शन के बजाय स्वीकार्य प्रदर्शन के लिए देख रहे हैं। यदि आप किसी क्वेरी के चलने वाले समय को 3 मिनट से 3 सेकंड तक कम कर सकते हैं, तो इसे तब तक 2 सेकंड तक कम करने पर पसीना न पड़े जब तक आपसे पूछा नहीं जाता है।
दूसरा, यह सुनिश्चित करने के लिए एक त्वरित जांच करें कि आप जिन प्रश्नों को अनुकूलित कर रहे हैं वे तार्किक रूप से सही हैं। यह बेतुका लगता है, लेकिन मैं आपको धीमी गति से चलने वाली क्वेरी पर सलाह के लिए पूछे जाने वाले समय की संख्या नहीं बता सकता, केवल यह पता लगाने के लिए कि यह कभी-कभी गलत जवाब दे रहा था! और जैसा कि यह पता चला है, क्वेरी को डिबग करना अक्सर इसे गति देने के लिए बाहर निकला।
विशेष रूप से, व्याख्या योजना में "कार्टेशियन जॉइन" वाक्यांश की खोज करें। यदि आप इसे वहां देखते हैं, तो संभावनाएं बहुत अच्छी हैं कि आपको एक अनजान कार्टशियन शामिल हो गया है। एक अनजान कार्टेशियन जुड़ने के लिए सामान्य पैटर्न यह है कि फोरम क्लॉज को अल्पविराम से अलग टेबल सूचीबद्ध करता है, और जुड़ने की स्थिति WHERE खंड में होती है। सिवाय इसके कि इसमें शामिल होने वाली स्थितियों में से एक गायब है, ताकि ओरेकल के पास कार्टियरियन शामिल होने के अलावा कोई विकल्प न हो। बड़ी टेबल के साथ, यह एक प्रदर्शन आपदा है।
कार्टेशियन को समझाने की योजना में शामिल होना संभव है जहां क्वेरी तर्कसंगत रूप से सही है, लेकिन मैं इसे ओरेकल के पुराने संस्करणों से जोड़ता हूं।
भी अप्रयुक्त कंपाउंड इंडेक्स की तलाश करें। यदि कंपाउंड इंडेक्स का पहला कॉलम क्वेरी में उपयोग नहीं किया जाता है, तो ओरेकल इंडेक्स का उपयोग अक्षमता से कर सकता है, या बिल्कुल नहीं। मुझे एक उदाहरण देता हूँ:
क्वेरी था:
select * from customers
where
State = @State
and ZipCode = @ZipCode
(डीबीएमएस ओरेकल नहीं था, इसलिए वाक्य रचना अलग था, और मैं मूल वाक्य रचना भूल गए हैं)।
इंडेक्स पर एक त्वरित झलक ने उस क्रम में कॉलम (देश, राज्य, ज़िपकोड) के साथ ग्राहकों पर एक सूचकांक का खुलासा किया। मैं क्वेरी बदल
select * from customers
where Country = @Country
and State = @State
and ZipCode = @ZipCode
को पढ़ने के लिए और अब यह, के बजाय लगभग 6 मिनट के बारे में 6 सेकंड में भाग गया क्योंकि अनुकूलक अच्छा लाभ के लिए सूचकांक का उपयोग करने में सक्षम था। मैंने आवेदन प्रोग्रामर से पूछा कि उन्होंने देश को मानदंडों से क्यों छोड़ा था, और यह उनका जवाब था: उन्हें पता था कि सभी पतेों में देश 'यूएसए' के बराबर था, इसलिए उन्होंने सोचा कि वे उस मानदंड को छोड़कर क्वेरी को तेज कर सकते हैं!
दुर्भाग्यवश, डेटाबेस पुनर्प्राप्ति को अनुकूलित करना वास्तव में कंप्यूटिंग समय से शेविंग माइक्रोसेकंड के समान नहीं है। इसमें डाटाबेस डिज़ाइन, विशेष रूप से इंडेक्स, और कम से कम एक अवलोकन है कि ऑप्टिमाइज़र कैसे अपना काम करता है।
जब आप इसे आउटमार्ट करने की कोशिश करने के बजाय इसके साथ सहयोग करना सीखते हैं तो आपको आमतौर पर अनुकूलक से बेहतर परिणाम मिलते हैं।
अनुकूलन पर गति के लिए अच्छी किस्मत आ रही है!
मैं आपकी मदद करता हूं, और विशेष रूप से लिंक की सराहना करता हूं। यह अब से मेरे लिए शुरू हो रहा है। मदद के लिए एक बार फिर से धन्यवाद। –
इंडेक्स का उपयोग न करने में शामिल हो सकता है बुरा हो सकता है, वे बिल्कुल सही हो सकते हैं।यह सब निर्भर करता है। मत करो, इंडेक्स के साथ हर पूर्ण टेबल स्कैन को खत्म करने की कोशिश मत करो। –