MongoDB中数据量大的话,不推荐使用 skip 和 limit,那其它方式怎么实现?
迷茫
迷茫 2017-04-24 09:10:31
0
2
642
  1. 如题,我前两天去参加 MongoDB 用户组交流会时,听讲师说到数据量大的话不要使用 skip 和 limit
    因为,这样会一行一行的数到想到的页数再取 PageSize 的数量。当然他们也提了另外一个方法,但是只略讲了一句。

    我在这里提问是想知道具体怎么做?求思路。

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

membalas semua(2)
大家讲道理

Jika anda ingin mendapatkan "halaman seterusnya" atau "halaman sebelumnya", anda boleh melakukannya dengan menanyakan isihan+had yang lebih besar daripada _id tertentu.
Jika anda ingin mendapatkan "halaman xxx", jika anda ingin tepat sepenuhnya, sebenarnya tidak ada cara yang baik. Paging itu sendiri adalah logik "kira satu per satu", dan proses yang memakan masa ini tidak boleh dielakkan tanpa mengira sama ada. terdapat indeks.
Apabila bilangan halaman sangat besar, tidak ramai orang mengambil berat tentang nombor selepas berpuluh juta Anda boleh menggunakan redis untuk menyimpan senarai _id mengikut nombor halaman dan mengemas kininya sekali-sekala.
Perkara asas masalah ini ialah: "Struktur b+ yang indeks bergantung tidak boleh digunakan untuk pengiraan kedudukan."

Ty80

Rekodkan _id terakhir pertanyaan terakhir dan pertanyaan seterusnya ialah {_id: {$gt: last_id}}

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan