Я пытаюсь оптимизировать запрос на выборку для Core Data.
У меня есть объект с атрибутом lastModifiedDate, который является объектом NSDate.Мне нужно запросить в моей базе данных последнее свойство lastModifiedDate.У меня есть следующий код, который отлично работает в небольших наборах данных, но с базой данных, содержащей 40 тыс. Записей, этот запрос выполняется как дерьмо.
NSDate *mostRecentLastModifiedDate = nil;
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:entityName inManagedObjectContext:self.managedObjectContext];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entityDescription];
[request setFetchLimit:1];
[request setPropertiesToFetch:[NSArray arrayWithObject:@"lastModifiedDate"]];
NSSortDescriptor *dateSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"lastModifiedDate" ascending:NO];
[request setSortDescriptors:[NSArray arrayWithObject:dateSortDescriptor]];
[dateSortDescriptor release];
NSError *error = nil;
NSArray *result = [self.managedObjectContext executeFetchRequest:request error:&error];
if (error) {
NSLog(@"Error fetching most recent lastModifiedDate property for %@ entity, error details: %@", entityName, error);
} else if ([result count] > 0) {
mostRecentLastModifiedDate = [[[[result objectAtIndex:0] valueForKey:@"lastModifiedDate"] copy] autorelease];
} else {
mostRecentLastModifiedDate = [NSDate distantPast];
}
[request release];
return mostRecentLastModifiedDate;