बेशक एक यादृच्छिक क्वेरी पर सॉर्टिंग करने में कुछ समय लगता है, लेकिन यदि आपको समान पगने वाली क्वेरी के साथ समस्याएं नियामक उपयोग में समस्याएं आ रही हैं, तो डेटाबेस सेटअप के साथ कुछ गड़बड़ है (अनुचित रूप से अनुक्रमण/कोई भी नहीं, बहुत कम स्मृति आदि। मैं एक डीबी-मैनेजर नहीं हूं) या आप पेजिंग को गंभीरता से गलत कर रहे हैं:
बहुत गलत: उदाहरण के लिए select * from hugetable where somecondition;
को सरणी के साथ पेज गिनती प्राप्त करने वाले सरणी में लेना। लम्बाई प्रासंगिक इंडेक्स चुनें और सरणी डाइक करें - फिर प्रत्येक पृष्ठ के लिए इसे दोहराएं ... यही वह है जिसे मैं गंभीर रूप से गलत कहता हूं।
बेहतर समाधान दो प्रश्न: केवल एक गिनती प्राप्त करने के बाद limit
और offset
का उपयोग करके परिणाम प्राप्त हो रहा है। (कुछ मालिकाना, गैर-मानक-एसक्यूएल सर्वर में एक प्रश्न विकल्प हो सकता है, मुझे पता नहीं है)
खराब समाधान वास्तव में छोटी तालिकाओं पर ठीक से काम कर सकता है (वास्तव में यह असंभव नहीं है कि यह बहुत छोटी तालिकाओं पर तेज़ है, क्योंकि दो प्रश्न बनाने का उपर एक प्रश्न में सभी पंक्तियों को प्राप्त करने से बड़ा है। मैं यह नहीं कह रहा हूं कि है ...) लेकिन जैसे ही डेटाबेस बढ़ने लगता है, समस्याएं स्पष्ट हो जाती हैं।
स्रोत
2008-11-14 10:09:57
यदि आप शीर्षक को देखते हैं तो प्रश्न समझ में आता है, जब आप स्वयं प्रश्न पढ़ते हैं तो यह समझ में आता है। –