4

如果我选择查询repeated属性,我是否会为查询性能付出代价?例如:

class User(ndb.Model):
    user_name = ndb.StringProperty()
    login_providers = ndb.KeyProperty(repeated=true)

fbkey = ndb.Key("ProviderId", 1, "ProviderName", "FB")
for entry in User.query(User.login_providers == fbkey):
    # Do something with entry.key

对比

class User(ndb.Model)
    user_name = ndb.StringProperty()

class UserProvider(ndb.Model):
    user_key = ndb.KeyProperty(kind=User)
    login_provider = ndb.KeyProperty()

for entry in UserProvider.query(
    UserProvider.user_key == auserkey,
    UserProvider.login_provider == fbkey
):
    # Do something with entry.user_key

根据 GAE 的文档,似乎 Datastore 负责索引,第一个不太冗长的选项是使用索引。但是,我没有找到任何文件来证实这一点。

编辑

第二个示例的唯一目的是UserProvider在用户和它的 login_provider 之间创建一对多的关系。repeated我想了解创建第二个实体而不是查询属性是否值得。另外,假设我需要的只是来自User.

4

1 回答 1

6

不会。但是您会提高写入成本,因为每个条目都需要建立索引,而写入成本取决于更新的索引数量。

于 2013-07-03T17:16:53.920 回答