2013-02-28 6 views
8

Ich baue ein Datenmodell in greenDAO. Es ist ein Port einer iOS App, die Core Data verwendet. In iOS verwenden wir Indizes (Indizes?), Um die Suchleistung in einer Tabelle mit 20 Spalten (Eigenschaften) zu erhöhen, in denen 5 Spalten häufig abgefragt werden. Ich weiß, dass dies zusätzlichen Speicher zur Folge hat und langsamer in die Tabelle schreibt.Korrekte Möglichkeit zum Hinzufügen von Indexspalten in greenDao?

Digging in der Dokumentation stieß ich auf die addIndex (Index-Index) -Methode in Entity und die index() -Methode in Property.PropertyBuilder. Welches ist der richtige Weg, um einen Index zu einer Entity hinzuzufügen?

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

oder

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

Oder tun sie beide das gleiche tun?

Antwort

18

Verwenden Sie myProperty.index() für einzelne Eigenschaftenindizes (weil es am bequemsten ist).

Für komplexere Indizes, wie Indizes mit mehreren Spalten, verwenden AddIndex (Index):

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

nicht hier sollte index.makeUnique() sein; ? – Flinbor

+0

@Flinbor 'makeUnique()' ist optional. Verwenden Sie es, um zu verhindern, dass zwei Zeilen die gleichen Werte in beiden Spalten haben. –

+0

vielleicht ist das veraltet, aber wenn ich es versuche, löst es einen Fehler aus, der sagt, dass "Index" abstrakt ist, also kann ich es nicht instantiieren ... –

Verwandte Themen