私はmongodbとNodeJを持っています。接続はmongoosejsを介して行われます。
ajaxインフィニティスクロールを開発するための最良の方法は何ですか?制限とオフセットを使用する必要がありますか?
質問する
9869 次
1 に答える
36
「スキップアンドリミット」アプローチは、データセットに深くページングしている場合はあまり効率的ではありません。これは事実上、画家のアルゴリズムであるシュレミエルです。
範囲クエリははるかに効率的です(インデックスでサポートされている場合)。たとえば、ツイートを表示しているとしましょう。ページサイズが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
)。
ページをロードするときに、最後のツイートのタイムスタンプをメモし、それを使用して次のページを照会するというアイデアが得られます。
于 2012-04-09T11:37:16.440 に答える