我有一个可以成功迁移的模型,但是需要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迁移的任何其他提示/提示将不胜感激!
最佳答案
也许我对问题“ Example or explanation of Core Data Migration with multiple passes?”的回答很有用。它涉及多次迁移以向用户显示某种进度。
关于iphone - 核心数据模型版本迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6344660/