【问题标题】:mongo db skip takes too long time [duplicate]mongodb跳过需要很长时间[重复]
【发布时间】:2012-05-26 22:30:54
【问题描述】:

可能重复:
Slow pagination over tons of records in mongo

我创建了一个简单的测试:

> db.t.count()
7852054
> db.t.find().skip( 1500000 ).limit(1)
{ "_id" : ObjectId("4fc078aa82618808f416e372"), "value" : 1500000 }
>

在大型集合中使用跳过和限制进行分页需要太长时间。

有没有更好的方法来做到这一点?

【问题讨论】:

  • 我有另一个应用程序继续插入值: for i in xrange(0,99999999): db.t.insert( {"value":i} ) 所以跳过 1500000 需要超过 5 秒.在我停止插入应用程序之后。在一秒钟内跳过 1500000 个响应。但是跳过 12000010 个任务大约 5 秒。
  • 你能解释一下你到底想做什么吗?
  • 我想做分页。给出一个 pageno,并显示从 page_size*pageno 到 page_size*(pageno+1) 的记录

标签: mongodb


【解决方案1】:

你查看过docs吗?

不幸的是,跳过可能(非常)昂贵,并且需要服务器 从集合或索引的开头步行到 开始返回数据页之前的偏移/跳过位置 (限制)。随着页码的增加,跳过会变得越来越慢 cpu 密集型,可能是 IO 密集型,具有更大的集合。

基于范围的分页可以更好地使用索引,但不允许 您可以轻松跳转到特定页面。

【讨论】:

    猜你喜欢
    • 2010-12-18
    • 2018-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多