我一直在使用Google App Engine,并且遇到一些数据查询缓慢的问题。我读过设计一个App Engine数据存储区与使用SQL数据库不同的思维模式,我不确定我是否以最好的方式来做这件事。我有两个问题,试图得到正确的轨道上:GQL查询优化和表架构
具体做法是:
我有一个Foo
类型和UserFoo
类型。每个UserFoo
是对应的Foo
的“实例”并保存特定于该实例的数据。我的Foo
类型有一个fooCode
属性,它是一个唯一的标识符,我使用它们的fooCode
属性将每个UserFoo
与各个Foo
映射。然后,我对每个富的代码运行,像这样:
foos = Foo.all().filter('bar =', bar)
for foo in foos:
userFoo = UserFoo.all().filter('userKey =', user).filter('fooCode =', foo.fooCode)
注:我使用fooCode
超过参考键,以便我们可以很容易地删除并重新添加新Foo
S和不必再重新映射所有对应UserFoo
s。
一般来说:
什么是设计GAE数据存储表和最佳实践使用它们典型的做法?
Foo和UserFoo对象之间是否存在1对1的对应关系? – 2010-08-03 19:46:27
请注意,您所展示的实际上并不是一个GQL查询。 – 2010-08-03 19:48:50
1 Foo许多用户信息。另外,我最初调用的是GqlQuery,但改变了它们,因为我读得比较慢。 – 2010-08-03 19:52:54