2013-02-10 194 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)的成本。