Rumah > Soal Jawab > teks badan
如题,我前两天去参加 MongoDB 用户组交流会时,听讲师说到数据量大的话不要使用 skip 和 limit
因为,这样会一行一行的数到想到的页数再取 PageSize 的数量。当然他们也提了另外一个方法,但是只略讲了一句。
我在这里提问是想知道具体怎么做?求思路。
大家讲道理2017-04-24 09:12:31
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."
PHP中文网2017-04-24 09:12:31
Rekodkan _id terakhir pertanyaan terakhir dan pertanyaan seterusnya ialah {_id: {$gt: last_id}}