iphone - 核心数据模型版本迁移

标签 iphone sql core-data sqlite migration

我有一个可以成功迁移的模型,但是需要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/

相关文章:

sql - Postgresql 9.1 中已存在关系 "pk"

ios - 如果从 CoreData 中删除最后一个 UITableViewCell,则 NSManagedObject 值将重置

iphone - 无法在通用应用程序中使用 UISplitViewController?

iphone - ASIHTTPRequest 和僵尸...

iphone - 当用户重新排列单元格时,如何刷新 UITableView?

sql - 比较 varchar 列中的十进制值

php - 动态/递归 SQL 排序方式

objective-c - 如何删除核心数据持久存储

core-data - 映射模型为NULL - 核心数据迁移

ios - 检测在ios中的原型(prototype)单元格中单击了哪个按钮