2
我在GAE應用程序中有以下模型。關於GAE數據存儲區的索引
class User
school_name = db.StringProperty(Indexed=True)
country = db.StringProperty(Indexed=True)
city = db.StringProperty(Indexed=True)
sex = db.StringProperty(Indexed=True)
profession = db.StringProperty(Indexed=True)
joined_date = db.DateTimeProperty(Indexed=True)
而我想通過這些字段的組合來過濾用戶。過濾器的結果應該首先顯示最近加入的用戶。所以這意味着任何查詢以命令操作結束,我想。這樣的:
User.all().filter('country =','US').filter('profession =','SE').order('-joined_date')
User.all().filter('school_name =','AAA').filter('profession =','SE').order('-joined_date')
....
User.all().filter('sex =','Female').filter('profession =','HR').order('-joined_date')
所有這些字段組合是C(5,1)+ C(5,2)+ ... + C(5,5)= 31
我的問題是要實現它,是否需要爲Google AppEngine中的所有這些情況(31)創建索引。或者你可以建議其他方式來實現它?
注:在C(n,k)是組合公式,多見於http://en.wikipedia.org/wiki/Combination
提前感謝!
您所描述的問題稱爲「爆炸索引」。下面的尼克對你有一些很好的建議。 – 2011-04-21 11:54:35
謝謝賈斯汀,現在我知道它被稱爲'爆炸索引' – Nyambaa 2011-04-21 12:16:02