मेरे पास कुछ जटिल ओरेकल क्वेरी है जिसे पूरा होने में लगभग आधे घंटे का समय लग रहा है। अगर मैं क्वेरी का धीमा हिस्सा लेता हूं और इसे अलग से चलाता हूं तो यह कुछ सेकंड में खत्म हो जाता है। यहाँ अलग क्वेरी के लिए SQL मॉनिटर रिपोर्ट का एक स्क्रीनशॉट है:
यहाँ पूर्ण तर्क के भाग के रूप में एक ही तर्क दिया गया है:
रंग दोनों स्क्रीनशॉट में समान तालिकाओं के अनुरूप हैं। धीमी क्वेरी के लिए, ओरेकल MERGE JOIN
दो तालिकाओं के बीच कर रहा है जिसमें समानता की स्थिति नहीं है JOIN
। उसी के परिणामस्वरूप, लगभग 150 मिलियन मध्यवर्ती पंक्तियों को अनावश्यक रूप से संसाधित किया जाता है।
मैं क्वेरी संकेत या पुनर्लेखन के साथ इस समस्या को हल करने में सक्षम हूं, लेकिन मैं इसके मूल कारण के रूप में समझना चाहता हूं ताकि मैं भविष्य में इस समस्या से बच सकूं और संभवतः Oracle को बग रिपोर्ट प्रस्तुत कर सकूं। हर बार जब मुझे खराब योजना मिलती UNPIVOT
है तो क्वेरी टेक्स्ट को UNION ALL
योजना में बदल दिया जाता है । आगे की जांच के लिए मैं उस क्वेरी परिवर्तन को होने से रोकना चाहूंगा। मैं इस परिवर्तन के लिए एक नाम खोजने में असमर्थ रहा हूं। मैं एक क्वेरी संकेत या अंडरस्कोर पैरामीटर को खोजने में सक्षम नहीं हूं जो इसे रोक देगा। मैं एक विकास सर्वर पर परीक्षण कर रहा हूँ ताकि कुछ भी हो।
वहाँ कुछ भी है कि मैं की क्वेरी परिवर्तन को रोकने के लिए कुछ कर सकते हैं UNPIVOT
करने के लिए UNION ALL
? मैं Oracle 12.1.0.2 पर हूं।
मैं आईपी कारणों के लिए क्वेरी, तालिका नाम या डेटा साझा करने में सक्षम नहीं हूं। मैं एक साधारण प्रजनन के साथ आने में सक्षम नहीं था। इसके साथ ही कहा, यह मेरे लिए अस्पष्ट है कि प्रश्न का उत्तर देने के लिए उस जानकारी की आवश्यकता क्यों है। यहाँ UNP के रूप में कार्यान्वित समान क्वेरी के साथ UNPIVOT क्वेरी का एक उदाहरण दिया गया है।