0

获取 AppEngine Datastore 查询大小的最有效方法是什么?

假设我有一个带有过滤器的查询,因此检索到的实体数为 N。是否可以在不进行完整数据存储检索的情况下获得 N 的值?

我发现最有效的方法是使用“仅限键”查询,因此:

Query q = new Query("MyKind").setKeysOnly();
q.setFilter(someFilter);
PreparedQuery pq = datastore.prepare(q);
long N = pq.asList().size();

有没有更好的办法?如果我只想知道大小N是否超过某个值,有没有更有效的方法?

谢谢。

4

1 回答 1

1

为什么不使用countEntities? https://developers.google.com/appengine/docs/java/javadoc/com/google/appengine/api/datastore/PreparedQuery#countEntities(com.google.appengine.api.datastore.FetchOptions)

您还可以在分片计数器中自己跟踪计数。另一个想法是,如果您只需要估计,请尝试最终一致的查询,这应该会更快。

于 2013-05-05T16:04:36.990 回答