Podejście „pomiń i ogranicz” nie jest zbyt wydajne, gdy stronicujesz daleko w zbiorze danych. W rzeczywistości jest to algorytm Szlemiela Malarza.
Zapytania o zakres są znacznie wydajniejsze (jeśli są obsługiwane przez indeksy). Na przykład wyobraźmy sobie, że wyświetlasz tweety. Twój rozmiar strony to 20, jesteś na stronie 1000 i chcesz załadować stronę 1001.
To zapytanie
db.tweets.find().sort({created_at: -1}).skip(1001*20).limit(20)
to dużo mniej wydajny niż
db.tweets.find({created_at: {$lt: last_displayed_date}}).
sort({created_at: -1}).limit(20);
(pod warunkiem, że masz indeks na created_at
).
Masz pomysł:po załadowaniu strony zanotuj znacznik czasu ostatniego tweeta i użyj go do zapytania o następną stronę.