开发者社区> 问答> 正文

MongoDB中大数据量除了使用 skip 和 limit还可以怎样做

1.如题,我前两天去参加 MongoDB 用户组交流会时,听讲师说到数据量大的话不要使用 skip 和 limit
因为,这样会一行一行的数到想到的页数再取 PageSize 的数量。当然他们也提了另外一个方法,但是只略讲了一句。
我在这里提问是想知道具体怎么做?求思路。

展开
收起
蛮大人123 2016-02-14 16:24:07 3004 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    如果你是想取“下一页”或者“上一页”,可以通过查询大于某个_id的sort+limit来实现。
    如果你是想取“第xxx页”,如果想要完全精确,其实没有多好的办法,分页本身是“挨个数”的逻辑,有没有索引都避免不了这个耗时的过程。
    在分页数非常大的情况下,排在几千万之后的数字并没有多少人关心,你可以使用redis做页数对_id列表的缓存,每隔一段时间更新一次。
    这个问题的根本点在于:“索引所依赖的b+结构不能用于排名计算”。

    2019-07-17 18:42:44
    赞同 1 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Data as a Service - 数据即服务 -- MongoDB⾼级应⽤模式 立即下载
开源数据库 MongoDB 专场 MongoDB疑难杂症分析及优化 立即下载
饿了么高级架构师陈东明:MongoDB是如何逐步提高可靠性的 立即下载