OStack程序员社区-中国程序员成长平台

标题: ios - iPad 上的核心数据获取速度非常慢 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 07:36
标题: ios - iPad 上的核心数据获取速度非常慢

我在使用 iOS 4.3.2 的 iPad 上运行以下核心数据获取请求。

NSPredicate *predicate = [NSPredicate predicateWithFormat:
                          @"feed.account.name == %@ AND feed.feedType == %@", accountName,feedType];

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey"date" 
                                                               ascending:NO];

NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];

fetchedResultsController=[self createFetchedResultsController"RssFeedItem"  predicate:predicate sortDescriptors:sortDescriptors];

[fetchedResultsController.fetchRequest setPropertiesToFetch:[NSArray arrayWithObjects"url",@"headline",@"isRead",@"origin",@"originId",@"date",nil]];


[fetchedResultsController.fetchRequest setFetchLimit:500];

[fetchedResultsController setDelegate:self];

[fetchedResultsController performFetch:&error];

return [fetchedResultsController fetchedObjects];

我在 RssFeedItem 表的 SQLite 数据库中有大约 688 行数据,而在所有其他表中不到 100 行。该查询使用调试日志记录为:

CoreData: sql: SELECT t0.Z_ENT, t0.Z_PK, t0.ZURL, t0.ZHEADLINE, t0.ZISREAD, t0.ZORIGIN,           
CoreData: annotation: sql connection fetch time: 3.3854s
CoreData: annotation: total fetch execution time: 3.4178s for 688 rows.

而且运行速度非常慢(超过 3 秒)。我对所有必需的搜索字段和排序字段都有索引。我假设也许 2 方式加入让它变慢了,但不知道为什么它会那么慢。有什么方法可以优化此代码或查询,还是我应该查看其他内容?



Best Answer-推荐答案


我猜你的查询速度变慢的行是

 [fetchedResultsController.fetchRequest setPropertiesToFetch:[NSArray 
 arrayWithObjects"url",@"headline",@"isRead",@"origin",@"originId",@"date",nil]];

[fetchedResultsController.fetchRequest setFetchLimit:500];

我很好奇,为什么需要一次获取所有这些属性(和 500 项)?

关于ios - iPad 上的核心数据获取速度非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5889740/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4