を光栄にされていない私は、UI上でページネーションを実装したいので、私はこのようのfetchSizeを設定します。カサンドラ.setFetchSize()ステートメントには
boundStatement.setFetchSize(20)
しかしsetFetchSizeメソッド()光栄されていません。私のテーブルは現在400行あり、400行すべてが取り出されます。
rs.getExecutionInfo().getPagingState();
を使用して次の行セットを取得すると、次の380行が取得されます。
....
....
// "SELECT * FROM abc.sometable"
BoundStatement boundStatement = pStmt.bind();
boundStatement.setFetchSize(20);
if (pagingState != null) {
boundStatement.setPagingState(PagingState.fromString(pagingState));
}
ResultSet rs = session.execute(boundStatement);
PagingState nextPage = rs.getExecutionInfo().getPagingState();
int remaining = rs.getAvailableWithoutFetching();
List<?> list = new ArrayList<>();
for (Row row : rs) {
list.add(getValidObjectFromRow(row));
}
....
カサンドラ:だからページング状態を正しく設定し、検索が、なぜテーブルからすべての400行をretreivingドライバーですし、私はこれを回避したりすることができますどのようにそれは、コードのわずか400
部分を取得しますバージョン3.7およびcassandraドライババージョン3.1.0
ありがとう!
ResultSetをどのように消費していますか?ドライバは、カバーの下に次の20行(など)をページングしている可能性があります。 –
wiresharkを使用すると、クエリ/結果を見て、実際に20チャンクでフェッチしているかどうかを確認できます。より多くの制御が必要な場合は、クエリに 'LIMIT 20 'を追加し、手動でページしたいかもしれません。 –
コードブロックで質問を更新しました。 – user1860447