统计实体时限制查询结果
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);
}
谢谢!
范围
查询可以指定要返回给应用程序的结果范围。范围表示完整结果集中哪些结果应该是最先返回的和最后返回的。结果由它们的数字索引标识,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
编码愉快...
我想统计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);
}
谢谢!
范围
查询可以指定要返回给应用程序的结果范围。范围表示完整结果集中哪些结果应该是最先返回的和最后返回的。结果由它们的数字索引标识,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
编码愉快...