我正在使用NSFetchResultsController
从数据库接收项目(有80.000项)。
这是我的谓语:@"(desc CONTAINS[cd] %@)", [any text]
对于NSFetchRequest
我设置了下一个属性:
request.propertiesToFetch = [NSArray arrayWithObject:[[entityDescription propertiesByName] objectForKey:@"icd"]];
request.returnsDistinctResults = YES;
[request setFetchBatchSize:100];
[request setSortDescriptors:[NSArray arrayWithObject:[[NSSortDescriptor alloc] initWithKey:@"icd" ascending:YES]]];
这背后的想法是我想要一个实时搜索(每个角色用户在文本字段中写入,NSFetchResultsController
应该再次进入数据库。
接下来的问题是:在iPad Mini上,每次获取持续时间都在2-3秒之间,这非常非常。我记得1年前我做过同样的事情,工作得更快。
你可以给我一些建议吗?我真的不知道如何改进查询。答案 0 :(得分:1)
你的问题是你的谓词。它会扫描每条记录,以查找哪些记录包含所需的搜索文本。此外,使用[cd]会使速度更慢。
解决了这个确切的问题