Verificando duplicatas ao importar para o CoreData

Estou importando dados para um armazenamento Core Data usando RestKit e preciso verificar se há duplicatas. Se o item já estiver na loja, eu gostaria de atualizá-lo com os atributos mais recentes. Se é um novo item, gostaria de criá-lo.

A importação foi lenta, então usei o Instruments e vi que a parte mais longa da importação era verificar se o item já existe (com uma solicitação de busca)

Então, eu gostaria de saber se verificar se o item já está na loja, é mais rápido para:

use countForFetchRequest para ver se o item já existe, execute executeFetchRequest para retornar o item para atualizar ouapenas executeFetchRequest para obter o item para atualizarOu há uma maneira melhor de fazer isto?

Eu pensei que countForFetchRequest seria mais rápido, já que o NSManagedObject inteiro não é retornado e só executaria a solicitação de busca se eu soubesse que haveria um NSManagedObject.

obrigado

- (Product *)productWithId:(int)productID {

    NSManagedObjectContext *context = [Model sharedInstance].managedObjectContext;
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"product_id == %d", productID];
    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    request.entity = [NSEntityDescription entityForName:@"Product" inManagedObjectContext:context];
    request.predicate = predicate;
    request.fetchLimit = 1;

    NSError *error = nil;

    NSUInteger count = [context countForFetchRequest:request error:&error];

    if (!error && count == 1) {
        NSArray *results = [context executeFetchRequest:request error:&error];
        if (!error && [results count]) {
            return [results objectAtIndex:0];
        }
        return nil;
    }

    return nil;

}