2011-04-25 21 views
1

我正试图优化针对核心数据的提取请求。针对最近修改的对象优化的核心数据提取

我有一个名为lastModifiedDate属性的实体,它是一个NSDate对象。我需要查询我的数据库中最新的lastModifiedDate属性。我有下面的代码,它可以在小数据集中正常工作,但是有一个拥有40k记录的数据库,这个查询就像废话一样运行。

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; 

回答

1

阅卷lastModifiedDate属性作为数据模型索引使这个查询非常快,仍然是有兴趣,如果有更好的方法来做到这一点,虽然。