对于这个基本查询,我们最近开始收到很多 DatastoreTimeoutException:
select id from Later where at < '2013-07-04' limit 500 (Some Pseudo SQL)
在代码中它看起来像:
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
Query query = new Query("Later").setKeysOnly();
Filter f = new FilterPredicate("at",FilterOperator.LESS_THAN, new Date());
query.setFilter(f);
query.addSort("at", SortDirection.DESCENDING);
PreparedQuery pq = datastore.prepare(query);
return pq.asList(FetchOptions.Builder.withLimit(500));
桌子有 aprox。150 万个实体。这是正常的数据存储行为吗?
更新:如果我们删除过滤器,效果会更好。当然,我们需要过滤器,所以从长远来看,这不是一个解决方案。