2011-04-25 4 views
1

핵심 데이터에 대한 가져 오기 요청을 최적화하려고합니다.가장 최근에 수정 된 객체에 대한 핵심 데이터 가져 오기

NSDate 객체 인 lastModifiedDate라는 속성이있는 엔티티가 있습니다. 가장 최근의 lastModifiedDate 속성에 대한 데이터베이스를 쿼리해야합니다. 나는 작은 데이터 세트에서 잘 작동하는 다음 코드를 가지고 있지만, 40k 레코드를 가진 데이터베이스에서는이 쿼리가 쓰레기처럼 실행된다. 데이터 모델에 인덱스로는 lastmodifieddate 속성을 표시

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

이 생각을 할 수있는 더 좋은 방법이 있다면 여전히 관심을 가질만한, 매우 빠른이 쿼리를했다.

관련 문제