0

コア データを使用する iOS アプリの検索速度を改善するのに苦労しています。検索速度を改善するための代替ソリューションを誰かが助けたり提案したりできますか? 以下に私の状況の詳細をリストしました。

プロジェクトの詳細

現在、プリロードされた SQLite データベースでコア データを使用するデータ参照アプリを作成しています。100000 を超えるレコードを含むエンティティの 1 つ以上の属性を検索して、結果をすばやく返すことができるようにしたいと考えています。

私がこれまでに達成した最良の結果 (検索はまだ静かですが) は、検索ディスプレイ コントローラーを使用してビューを読み込み、fetchResultController のフェッチ要求に対してフェッチ制限 (現在は 100) を設定することです。また、検索範囲を使用して述語を単純化しました。述語で 'contains' キーワードを使用していますが、WWDC 2010 のセッション 137 での提案を実装する方法と、どのキーワードを格納する必要があるか、またはいくつ格納する必要があるかがわかりません。

ここに私のクラスの1つへのリンクがあります http://pastebin.com/cHHicc1s

お時間をいただき、ありがとうございました。

よろしくジン・ジン・タオ

4

2 に答える 2

1

既存の属性を新しい属性として正規化し、インデックスを作成することができます。述語から「CONTAINS」を削除し、代わりに>=or <etc 値を使用します。また、比較のバランスがとれるように検索テキストを正規化します。Apple は、これらすべてを「派生プロパティ」の例と WWDC 2010 セッション # 118 ビデオで文書化しています。

于 2012-05-21T07:13:42.867 に答える
0

属性に対して大規模な検索を行う場合は、インデックスを作成する必要があります。モデルを定義するときに、Xcode でこれを行うことができます。エンティティをクリックすると、エンティティ名を指定した場所のすぐ下に、追加のインデックスを作成できます。

ただし、追加のファイル サイズのオーバーヘッドが発生し、挿入/削除にも少し時間がかかることに注意してください。ただし、検索は非常に高速になります。

于 2012-04-18T17:21:23.020 に答える