我有一个成功迁移的模型,但需要15-20秒。 (显然,这不是必须在启动时作为后台任务完成,否则我的应用程序将会超时。)
20秒的延迟,无论在何处完成,都是糟糕的用户体验。我一直在关注核心数据迁移的SQL输出,看看主要的瓶颈在哪里,我发现了这个有趣的声明
UPDATE ZSIZE SET Z_ENT = ( CASE WHEN Z_ENT = 9 THEN 10 ELSE Z_ENT END ) WHERE Z_ENT IN (9)
这句话似乎需要5秒钟(我的数据库中的其他表还有其他表格。)
当然,由于语句末尾的IN (9)
,它不需要在表中每行运行一个case语句吗?
为什么CoreData不会仅运行此语句?
UPDATE ZSIZE SET Z_ENT=10 WHERE Z_ENT = 9
对于奖励积分,我们非常感谢有关优化coredata迁移的任何其他提示/提示!
答案 0 :(得分:0)
也许我对问题“Example or explanation of Core Data Migration with multiple passes?”的回答很有用。它是关于在多次传递中进行迁移,以便向用户显示某种进展。