我正在设计数据存储模型,并在考虑查询过滤器的工作方式时尝试确定最佳方法。
最好只写两个例子。第一个例子是如果我有一个固定的“性别”属性,只有一个可以设置为“男性”或“女性”的字符串。
class Person(db.Model):
name = db.StringProperty()
gender = db.StringProperty()
p1 = Person(name="Steve", gender="male")
p2 = Person(name="Jane", gender="female")
p1.put()
p2.put()
males = db.GqlQuery("SELECT * FROM Person WHERE gender = :1", "male")
第二个例子是如果 Person 实体是一个 expando 模型,我动态设置了一个“is_male”或“is_female”动态属性。
class Person(db.Expando):
name = db.StringProperty()
p1 = Person(name="Steve")
p1.is_male = True
p1.put()
p2 = Person(name="Jane")
p2.is_female = True
p2.put()
males = db.GqlQuery("SELECT * FROM Person WHERE is_male = :1", True)
现在假设我们收集了数百万条记录并且我们想要进行查询,在运行 Python 2.7 的生产 Google App Engine 中,上述两种方法中的哪一种会更快?