我有一个包含 3 个实体的 CoreData 数据库:“Card”、“Record”、“Stat”,只有“Card”中有大约 3000 个对象,“Card”没有 blob 属性(我知道 blob 属性可能很慢),其他 2 个实体没有对象。
我在我的iPhone4上调试,当它打开数据库时,我发现它很慢,
这是我的代码:
NSLog(@"database start open...");
[self.database openWithCompletionHandler:^(BOOL success) {
NSLog(@"copy & open success: %d", success);
callback(YES);
}];
这是日志:
2013-05-13 13:11:54.776 SuiShouBei[1670:707] database start open...
2013-05-13 13:11:54.943 SuiShouBei[1670:1b03] CoreData: annotation: Connecting to sqlite database file at "/var/mobile/Applications/850D8AFD-BA6E-4E64-A150-507D5CD645FB/Documents/Default Database/StoreContent/persistentStore"
2013-05-13 13:11:54.950 SuiShouBei[1670:1b03] CoreData: sql: pragma cache_size=200
2013-05-13 13:11:54.956 SuiShouBei[1670:1b03] CoreData: sql: SELECT Z_VERSION, Z_UUID, Z_PLIST FROM Z_METADATA
2013-05-13 13:11:57.941 SuiShouBei[1670:707] copy & open success: 1
从CoreData日志中,SELECT Z_VERSION, Z_UUID, Z_PLIST FROM Z_METADATA花了3秒,这些字段和数据由CoreCode框架自己管理。有时甚至需要更长的时间(> 10s)。
我真的不知道为什么花了这么长时间,以及如何使它更快?
谢谢。