Apple的文档指出,为了在基于核心数据的iOS 7应用程序中有效插入批量数据,必须首先执行直接插入,而不要将第一阶段的关系放在一边。然后在第二阶段执行更新,然后关系进入场景。
我的问题是:对于与其他表有关系的表中的400000条记录的批量插入,应用程序首先运行循环400000以执行直接插入然后另一个循环为400000而不是一项昂贵的操作建立表之间的关系?
有没有有效的方法可以做到这一点,或者只需要遵循上述顺序?
答案 0 :(得分:0)
我的建议是批量执行导入操作。因此,例如,导入前N个数据,保存和重置等等。此机制允许您管理内存占用,如果您愿意,可以让用户使用初始数据,即在导入剩余批次时,用户可以与初始数据进行交互。
要计算N,您应该依赖Core Data Instrument,因为它是获取导入操作的客观时间的唯一方法。我猜没有别的方法。
在我的其他SO回复中,您可以找到一些很好的参考资料来描述导入数据的最佳方法:Core Data Fetch requests slow on large data set。
答案 1 :(得分:0)
两次运行400k记录插页是很昂贵的。但是,关系验证很昂贵,这就是文档建议将它们从初始插入中删除的原因。
您还可以计算在初始插入期间需要连接的关系,从而限制第二次传递的持续时间。