Tôi đang sử dụng RemoteAPI (Java) để trải qua một tập dữ liệu lớn, ~ 90K thực thể và thực hiện một số di chuyển dữ liệu.Truy vấn Datastore với giới hạn
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);
Với các thiết lập truy vấn LIMIT
-900
các result.size()
là toàn bộ dữ liệu, ~ 90k, thay vì 900
. Nếu tôi thử thấp hơn LIMIT
, hãy nói 300
, kích thước kết quả là kích thước mong đợi (300
).
tôi thiếu gì ở đây? Từ tài liệu, tôi không thể tìm ra lý do tại sao nó tạo ra hành vi mà tôi mô tả ở đây.
Tôi có thể nói điều gì đó ngu ngốc nhưng bạn đã thử thay đổi thứ tự các lựa chọn của mình chưa? FetchOptions.Builder.withLimit (LIMIT) .withPrefetchSize (CHUNK_SIZE) .chunkSize (CHUNK_SIZE) ) .startCursor (con trỏ); – yannicksoldati
Sửa lỗi nếu tôi sai nhưng tôi không thấy phương thức '.limit' trong Tóm tắt Phương thức cho đối tượng' FetchOptions.Builder' (xem: https://cloud.google.com/appengine/docs /java/javadoc/com/google/appengine/api/datastore/FetchOptions.Builder). Nên thay '.withLimit'. –