获取AppEngine数据存储区查询大小的最有效方法是什么?
假设我有一个带过滤器的查询,这样检索的实体数量就是N.是否可以在不进行完整数据存储检索的情况下获取N的值?
我找到的最有效的方法是仅使用"密钥"查询,因此:
Query q = new Query("MyKind").setKeysOnly();
q.setFilter(someFilter);
PreparedQuery pq = datastore.prepare(q);
long N = pq.asList().size();
有更好的方法吗?如果我只想知道尺寸N是否超过某个值,是否有更有效的方法?
感谢。
答案 0 :(得分:1)
为什么不使用countEntities? https://developers.google.com/appengine/docs/java/javadoc/com/google/appengine/api/datastore/PreparedQuery#countEntities(com.google.appengine.api.datastore.FetchOptions)
您还可以在分片计数器中自行跟踪计数。另一个想法是,如果您只需要估计,请尝试最终一致的查询,该查询应该更快。