我想要的是计算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 :(得分:1)
如果你执行SELECT count(p) FROM Employees p
,则会返回一行,其中包含一个值... COUNT,因为您要求计数。范围在该查询中毫无意义。当查询返回多行(对象)时,可以使用范围。
答案 1 :(得分:0)
查询可以指定要返回给应用程序的结果范围。范围指示完整结果集中的哪些结果应该是返回的第一个和最后一个。结果由其数字索引标识,0表示集合中的第一个结果。例如,5,10的范围返回第6到第10个结果:
q.setRange(5, 10);
答案 2 :(得分:0)
了解您拥有至少50名员工的最佳方法是使用以下查询/计数语句。
query = db.Query(Employee)
if query.count(50) == 50 :
# Means, you have at least 50 or more Employees in your Datastore
快乐的编码......