У меня следующий запрос на выборку Core Data, запущенный на iPad с использованием iOS 4.3.2.
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];
У меня около 688 строк данных в базе данных SQLite для таблицы RssFeedItem и менее 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 секунд).У меня есть индексы на все необходимые поля поиска и поля сортировки.Я предполагаю, что, возможно, двухстороннее соединение делает это медленным, но не уверен, почему это будет так медленноЕсть ли способ оптимизировать этот код или запрос, или я должен рассмотреть что-то еще?