2013-02-10 78 views
3

我正在开发一个应用程序,我在解析中添加了超过10k条记录添加到类中。现在我试图使用PFQuery获取这些记录(我正在使用“跳过”属性)。但我无法获取记录超过10K,我得到了以下错误消息无法获取超过10k条记录

“跳过大于10000不准

这是一个大问题,对我来说,因为我需要的所有数据。

有没有人遇到过这样的问题。请分享您的观点。

感谢

+0

你把10k寄存器带到内存中吗? – 2013-02-10 15:04:23

回答

1

我的假设是,这是基于与MongoDB的skip实施绩效问题。

的cursor.skip()方法,因为它要求服务器从集合或索引的开始走才能偏移或开始返回结果之前跳过位置往往是昂贵的。随着偏移(例如上面的pageNumber)增加,cursor.skip()将变得更慢并且CPU密集度更高。对于较大的集合,cursor.skip()可能会成为IO绑定。

3

问题的确是由于mongo跳过操作的成本。您可以制定一个查询,以便您不需要跳过运算符。我的首选方法是orderBy objectId,然后添加一个条件,即objectId> last产生objectId。这种类型的查询可以编入索引并保持快速,而不像跳过分页,它在搜索中有O(N^2)的成本。