核心数据和关系中的大数据插入

时间:2013-12-15 03:26:54

标签: objective-c core-data

Apple的文档指出,为了在基于核心数据的iOS 7应用程序中有效插入批量数据,必须首先执行直接插入,而不要将第一阶段的关系放在一边。然后在第二阶段执行更新,然后关系进入场景。

我的问题是:对于与其他表有关系的表中的400000条记录的批量插入,应用程序首先运行循环400000以执行直接插入然后另一个循环为400000而不是一项昂贵的操作建立表之间的关系?

有没有有效的方法可以做到这一点,或者只需要遵循上述顺序?

2 个答案:

答案 0 :(得分:0)

我的建议是批量执行导入操作。因此,例如,导入前N个数据,保存和重置等等。此机制允许您管理内存占用,如果您愿意,可以让用户使用初始数据,即在导入剩余批次时,用户可以与初始数据进行交互。

要计算N,您应该依赖Core Data Instrument,因为它是获取导入操作的客观时间的唯一方法。我猜没有别的方法。

在我的其他SO回复中,您可以找到一些很好的参考资料来描述导入数据的最佳方法:Core Data Fetch requests slow on large data set

答案 1 :(得分:0)

两次运行400k记录插页是很昂贵的。但是,关系验证很昂贵,这就是文档建议将它们从初始插入中删除的原因。

您还可以计算在初始插入期间需要连接的关系,从而限制第二次传递的持续时间。