0

我在将一组问题转换为高效的谷歌应用引擎数据存储解决方案时遇到问题。问题如下。我有一个实体定义两个对象之间的关系,即这样的:

struct Relation
{
  Obj1 int
  Obj2 int

  // other data
}

现在我想以一种有效的方式执行以下查询:给定一组对象set = [obj1, obj2, obj3, obj4],我想找到所有的关系实体(EE.Obj1 ∈ set ∧ E.Obj2 ∈ set。请注意,我事先不知道集合,因此我无法预先计算集合中的所有条目。有没有办法在数据存储中表示这个问题,以便我可以有效地检索属于给定集合的所有关系?

4

1 回答 1

1

等效的 GQL 查询是“SELECT * FROM Kind WHERE Obj1 IN :1 AND Obj2 IN :1”,将集合作为第一个参数传入。不幸的是,IN 查询扩展到每个术语的一个查询,因此这里的查询组合爆炸——在 4 元素集的情况下为 16 个查询。没有任何方法可以通过标准查询来避免这种情况。

于 2012-05-15T04:13:21.873 回答