これはiOS上です。コアデータフェッチを高速化する
私は約350,000のオブジェクトを持つコアデータベースを持っています。オブジェクト(製品)には、「バーコード」と「指定」という2つのプロパティがあります。ユーザは、「バーコード」を検索することによってオブジェクトを検索することができ、「指定」が返されるべきである。遅い以外はすべてうまくいっています。私が使用するコードは次のとおりです。
NSEntityDescription *_product = [NSEntityDescription entityForName:@"Product" inManagedObjectContext:importContext];
NSFetchRequest *fetch = [[NSFetchRequest alloc]init];
[fetch setEntity:_product];
[fetch setPredicate:[NSPredicate predicateWithFormat:@"Barcode == %@",theBarcode]];
NSError *error = nil;
NSArray *results = [importContext executeFetchRequest:fetch error:&error];
NSManagedObject *object = [results objectAtIndex:0];
私は1つのオブジェクトのみを取得したいので、それをスピードアップする方法はありますか?
起動時にすべてのオブジェクトをArrayに読み込むと、アプリケーションの起動が非常に遅くなり、大量のRAMが必要になります。
ありがとうございます!
編集:[fetch setFetchLimit:1]を追加しました。それは少しスピードアップします。しかし、オブジェクトが存在するデータベースの速度が遅くなってきています。
ちょうど質問したい(たぶん役立つかもしれない)なぜすべてのデータをすべての起動時に配列にロードするのですか? – shannoga
私はそれをしません。しかし、私はそれをすると、私は遅いスタートアップを持つだろうと言った:) – Mikael