जब आप डेटासेट में दूर तक पेजिंग कर रहे हों तो "स्किप एंड लिमिट" दृष्टिकोण बहुत कुशल नहीं है। यह प्रभावी रूप से श्लेमील द पेंटर का एल्गोरिथम है।
श्रेणी प्रश्न बहुत अधिक कुशल होते हैं (जब अनुक्रमणिका द्वारा समर्थित होते हैं)। उदाहरण के लिए, मान लें कि आप ट्वीट प्रदर्शित कर रहे हैं। आपके पृष्ठ का आकार 20 है और आप पृष्ठ 1000 पर हैं और पृष्ठ 1001 लोड करना चाहते हैं।
यह प्रश्न
db.tweets.find().sort({created_at: -1}).skip(1001*20).limit(20)
बहुत है से कम कुशल
db.tweets.find({created_at: {$lt: last_displayed_date}}).
sort({created_at: -1}).limit(20);
(बशर्ते कि आपके पास created_at
. पर अनुक्रमणिका हो )।
आपको यह विचार आता है:जब आप किसी पृष्ठ को लोड करते हैं, तो अंतिम ट्वीट के टाइमस्टैम्प को नोट करें और अगले पृष्ठ को क्वेरी करने के लिए इसका उपयोग करें।