2013-02-28 20 views
8

私はgreenDAOでデータモデルを構築しています。これは、コアデータを使用するiOSアプリのポートです。 iOSでは、インデックス(インデックス?)を使用して、5つのカラムが頻繁に照会される20のカラム(プロパティ)のテーブルでルックアップのパフォーマンスを向上させます。私はこれが余分なストレージをもたらし、テーブルへの書き込みが遅くなることを知っています。greenDaoにインデックス列を追加する適切な方法はありますか?

ドキュメントを調べると、EntityのaddIndex(インデックスインデックス)メソッドとProperty.PropertyBuilderのindex()メソッドが出てきました。エンティティにインデックスを追加する正しい方法はどれですか?

Entity entity = schema.addEntity("entity"); 
entity.setSuperclass("SuperClass"); 
entity.addIdProperty(); 
entity.addIntProperty("property").index(); 

または

Entity entity = schema.addEntity("entity"); 
entity.setSuperclass("SuperClass"); 
entity.addIdProperty(); 
Property property = entity.addIntProperty("property").getProperty(); 
entity.setIndex(property); 

それとも両方が同じことを行うのですか?

答えて

18

単一プロパティインデックスの場合は、のmyProperty.index()を使用するのが最も便利です。マルチカラム・インデックスのようなより複雑なインデックスについては、

、AddIndexメソッド(インデックス)を使用します。

Index index = new Index(); 
index.addProperty(property1); 
index.addProperty(property2); 
entity.addIndex(index); 
+0

ここではないですが)index.makeUnique(する必要があります。 ? – Flinbor

+0

@Flinbor 'makeUnique()'はオプションです。両方の列で同じ値を持つ2行を避けるために使用します。 –

+0

これは時代遅れかもしれませんが、試してみると 'Index'が抽象であるというエラーがスローされますので、インスタンス化できません。 –

関連する問題