spring jdbcテンプレートを使用してデータを取得しようとしています。 テーブルには何百万ものレコードがあります。spring jdbcテンプレートを使用して何百万ものレコードを持つテーブルからデータを取得する方法
以下のコードを使用して無限の時間を費やし、最後にコードを停止します。
private static final String CLIENTDATA_QUERY = "select logtime, clientip, clientagent, uri from client_data";
public List<ClientDataModel> readFromClientDataDB() {
// jdbcTemplate.setFetchSize(1000);
List<ClientDataModel> clientData = jdbcTemplate.query(CLIENTDATA_QUERY, new RowMapper<ClientDataModel>() {
@Override
public ClientDataModel mapRow(ResultSet rs, int rowNum) throws SQLException {
ClientDataModel model = new ClientDataModel();
model.setLogtime(rs.getString("logtime"));
model.setClientIP(rs.getString("clientip"));
model.setClientAgent(rs.getString("clientagent"));
// model.setUri(rs.getString("uri"));
return model;
}
});
System.out.println("Client Data Size :" + clientData.size());
return clientData;
}
誰かが、最も効率的な方法で巨大なテーブルからレコードを取得する方法を提案できますか?
すべてのレコードを取得する必要があり、さらにロジックのコードが開始されます。これはサーバー側です。
ページネート、ページネート、ページネート!カーソルを使用してください。 –
@FedericoPeraltaSchaffnerカーソルの意味をお聞かせください。可能であれば、例を挙げることもできますか?ありがとう –
レコードページをページ単位で処理できませんか?なぜあなたはまずテーブル全体をメモリに読み込む必要がありますか? –