【问题标题】:How long it can take to insert record in coredata?在coredata中插入记录需要多长时间?
【发布时间】:2017-02-21 09:22:10
【问题描述】:

我在我的核心数据实体中插入记录。 随着记录的增加,插入记录所需的时间增加。

当我的实体有大约 10000 条记录时,我有 6 秒的日志来插入 100 条记录(循环插入一条一条)。

我正在做的是在插入时检查,如果该记录已经存在,那么我正在更新该记录,否则插入。

循环的每一次迭代都有14个关系表的信息。

所以这样好吗?还是 6 秒更多?

【问题讨论】:

  • 您可能正在使用不同的上下文来编写和读取,并采用错误的方法来合并上下文之间的更改。发布代码以便有机会解决这个问题。

标签: swift core-data swift3


【解决方案1】:

不,它太长了。你这样做是不对的。但是有更好的方法!对要首先插入的所有记录执行一次 fetch fetch。然后通过您确保唯一的查找键(可能是某种 ID)将它们存储在字典中。然后,您只需检查字典即可,而不是为每个插入进行提取。如果您有很多关系并且在您的创建和/或更新方法中进行提取(以确保唯一性),那么提取的数量可能很快就会失控。您可以通过传递您的查找字典来解决此问题,这样就不必进行更多的提取。当然,您必须小心不要将这些字典传递给与进行提取的 managedObjectContext 无关的线程。

【讨论】:

  • hmm,是的,调试代码以确定代码的哪一部分需要时间
  • 2017-02-20 19:10:27.254 CFBundleDisplayName[41438:1981146] 插入记录 2017-02-20 19:10:34.807 CFBundleDisplayName[41438:1981146] 数据库更新
猜你喜欢
  • 1970-01-01
  • 2012-01-13
  • 1970-01-01
  • 2014-09-21
  • 1970-01-01
  • 1970-01-01
  • 2019-11-20
  • 2013-11-16
  • 1970-01-01
相关资源
最近更新 更多