统计实体时限制查询结果

Limit query results when counting entities

我想统计Employees的个数,但我只想知道是否有50个或更多Employees。如果我执行 Count 操作(见下文)并在 0->51 之间设置 Range,查询将只计算到 51 还是仍然计算所有 Employees?我想知道这一点,以便每次查询 运行 时查询都不会计算所有 1000 名员工(这对性能不利)。

Query query = pm.newQuery("SELECT count(p) FROM Employees p");
query.setRange(0, 51);
long count = (long) query.execute();
if(count >= skipThreshold)
{
   acceptedEmployees.add(mode);
}

谢谢!

来自google documentation :

范围

查询可以指定要返回给应用程序的结果范围。范围表示完整结果集中哪些结果应该是最先返回的和最后返回的。结果由它们的数字索引标识,0 表示集合中的第一个结果。例如,范围为 5, 10 returns 第 6 到第 10 个结果:

q.setRange(5, 10);

如果你这样做 SELECT count(p) FROM Employees p 那么那将 return 一行有一个值......计数,因为你要求计数。范围在该查询中毫无意义。当查询有多行(对象)return时使用范围。

了解您至少有 50 名员工的最佳方法是使用以下 Query/Count 语句。

query = db.Query(Employee)
if query.count(50) == 50 :
    # Means, you have at least 50 or more Employees in your Datastore

编码愉快...