获取AppEngine数据存储区查询大小的最有效方法

时间:2013-05-05 15:50:35

标签: google-app-engine google-cloud-datastore

获取AppEngine数据存储区查询大小的最有效方法是什么?

假设我有一个带过滤器的查询,这样检索的实体数量就是N.是否可以在不进行完整数据存储检索的情况下获取N的值?

我找到的最有效的方法是仅使用"密钥"查询,因此:

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

有更好的方法吗?如果我只想知道尺寸N是否超过某个值,是否有更有效的方法?

感谢。

1 个答案:

答案 0 :(得分:1)

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

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