2010-07-21 116 views
3

從我所瞭解的情況來看,App Engine索引在增加整體存儲容量和減慢寫入速度方面都很昂貴。Google App Engine索引成本

但是索引只在實際用於查詢時纔會付出代價並在index.yaml中顯式定義?或者,像StringProperty這樣的屬性僅僅通過現有的成本比它們的非索引對象(例如TextProperty)花費更多,即使它們沒有在index.yaml中使用?

回答

3

即使您沒有明確定義index.yaml文件中的任何附加索引,也會有內置/默認索引可能會產生開銷。因此,如果您知道您永遠不需要過濾該字段,則應該使用TextProperty而不是StringProperty

有關這些隱含指數的詳細信息,請參見文章How Entities and Indices are Stored

7

您還可以設置索引= False的屬性,您不想索引:

http://code.google.com/appengine/docs/python/datastore/propertyclass.html#Property

+0

如何在物業禁用Java代碼(JDO)案例索引? – akirekadu 2010-08-31 20:22:00

+0

@akirekadu:我沒有在應用程序引擎上使用Java,但http://code.google.com/appengine/docs/java/datastore/queriesandindexes.html#Introducing_Indexes表示使用「gae.unindexed」。 – 2010-09-01 00:58:06

+0

謝謝。我最終爲此http://code.google.com/appengine/docs/java/javadoc/com/google/appengine/api/datastore/Entity.html#isUnindexedProperty(java.lang.String) 使用了低級API 您指出的文檔中建議的方法當然更簡單和優雅。 – akirekadu 2010-09-01 14:36:49