我们正在将Google App Engine与Datastore和Objectify结合使用。在我们的本地计算机中,执行查询需要1秒,而在云中则需要大约20秒。服务器位置在欧洲西部,我在西班牙,所以我认为这不是问题。

我们正在执行的查询仅使用1个过滤器来检索数据:

final CityEntity cityEntity = new CityEntity();
cityEntity.setId(1);
ofy().load().type(Person.class).filter("city =", cityEntity).list();

最佳答案

在数据存储区中,查询将根据结果集的大小进行缩放。这个城市有多少人?如果很大,查询不仅会很慢,还会很快达到RAM的极限。

根据您要尝试执行的操作,您可能需要采用其他方法。例如,您可以执行仅键查询,将结果转换为任务,并为每个人排队一个任务。在您达到任务/任务的1000万截止日期之前,这可能多达数十万,甚至数百万。对于较大数量,您可能需要某种形式的map / reduce。

07-24 15:31