2013-12-15 50 views
0

Apple的文檔指出,爲了在基於核心數據的iOS 7應用程序中有效地插入批量數據,首先必須執行直接插入操作,而在第一階段中不考慮關係。然後在第二階段執行更新,然後關係進入場景。核心數據和關係中的大數據插入

我的問題是:對於400000條記錄與表中的其他表進行大容量插入,是不是一個昂貴的操作,應用程序首先運行循環400000來執行直接插入,然後另一個400000循環建立表之間的關係?

是否有任何有效的方法來做到這一點或需要遵循上述順序?

回答

0

我的建議是批量執行導入操作。因此,例如,導入前N個數據,保存和重置等。這種機制允許您管理內存佔用量,並且如果需要,可以使用戶使用初始數據,即在導入剩餘批次時,用戶可以與初始數據進行交互。

要計算N,您應該依賴核心數據工具,因爲它是獲取您的導入操作的客觀時間的唯一方法。我猜想沒有其他辦法。

在我的其他答覆中,您可以找到一些很好的參考資料,描述導入數據的最佳方法:Core Data Fetch requests slow on large data set

+0

批處理是平衡磁盤I/O的好方法,但它在關係驗證性能方面沒有任何優勢。 – ImHuntingWabbits

+0

@ImHuntingWabbits我同意你的意見。無論如何,根據我的經驗,唯一要做的就是測量進口階段來改進它。 –

0

運行400k記錄插入兩次是很昂貴的。然而,關係驗證是昂貴的,這就是爲什麼文檔建議將它們從初始插入中刪除。

您還可以計算在初始插入期間需要關聯的關係,從而約束第二遍的持續時間。