我使用RemoteAPI(Java)来浏览大型数据集,~90K实体,并执行一些数据迁移。
int CHUNK_SIZE = 500;
int LIMIT = 900;
QueryResultList<Entity> result = ds.prepare(entityQuery)
.asQueryResultList(
FetchOptions.Builder
.withPrefetchSize(CHUNK_SIZE)
.limit(LIMIT)
.chunkSize(CHUNK_SIZE)
).startCursor(cursor);
将查询LIMIT
设置为900
时,result.size()
是整个数据集,约为90K,而不是900
。如果我尝试使用较低的LIMIT
,例如300
,则结果大小为预期值300
。
我在这里缺少什么?从文档中我无法弄清楚为什么它会产生我在这里描述的行为。
答案 0 :(得分:0)
我认为您应该在.withLimit(LIMIT)
选项中使用.limit(LIMIT)
代替.asQueryResultList
所以我会按如下方式重构您的代码:
FetchOptions options = FetchOptions.Builder
.withLimit(LIMIT)
.withPrefetchSize(CHUNK_SIZE)
.chunkSize(CHUNK_SIZE);
QueryResultList<Entity> result = ds.prepare(entityQuery)
.asQueryResultList(options);
然后获取光标
result.getCursor();