केस 2 के साथ मुख्य समस्या यह है कि कई मामलों में संपूर्ण क्वेरी परिणाम सेट प्राप्त करना होता है और फिर पहले सॉर्ट किया जाता है पहली एन पंक्तियों को वापस किया जा सकता है - जब तक कॉलम द्वारा ऑर्डर अनुक्रमित नहीं किया जाता है और ओरेकल किसी प्रकार से बचने के लिए इंडेक्स का उपयोग कर सकता है। एक जटिल क्वेरी और डेटा के एक बड़े सेट के लिए इसमें कुछ समय लग सकता है। हालाँकि कुछ चीजें हो सकती हैं जो आप गति को बेहतर बनाने के लिए कर सकते हैं:
- यह सुनिश्चित करने का प्रयास करें कि आंतरिक SQL में कोई फ़ंक्शन नहीं कहा जाता है - इन्हें केवल पहली 20 पंक्तियों को वापस करने के लिए 5 मिलियन बार कॉल किया जा सकता है। यदि आप इन फ़ंक्शन कॉल्स को बाहरी क्वेरी पर ले जा सकते हैं तो उन्हें कम कहा जाएगा।
- Oracle को इस तथ्य के लिए अनुकूलित करने के लिए एक FIRST_ROWS_n संकेत का उपयोग करें कि आप कभी भी सभी डेटा वापस नहीं करेंगे।
संपादित करें:
एक और विचार:आप वर्तमान में उपयोगकर्ता को एक रिपोर्ट के साथ प्रस्तुत कर रहे हैं जो कर सकता है हजारों या लाखों पंक्तियां लौटाएं, लेकिन उपयोगकर्ता वास्तविक रूप से उन सभी के माध्यम से पृष्ठ पर नहीं जा रहा है। क्या आप उन्हें कम मात्रा में डेटा का चयन करने के लिए बाध्य नहीं कर सकते उदा। चयनित दिनांक सीमा को 3 महीने (या कुछ भी) तक सीमित करके?