私はmysqlでjdbcを使用しています。テーブル内のすべての行 (60,000 行、テーブル = InnoDB) を反復処理し、それぞれに対して何らかの処理を実行する必要があります。
mysql はそのような制限のないクエリを受け入れますか? 最も単純な実装では、単純にテーブル全体を選択し、カーソルがさらに結果を表示している間、結果を反復し続けます。
PreparedStatement stmt = conn.prepareStatement("SELECT * FROM foo");
ResultSet rs = stmt.getResultSet();
while (rs.next()) {
.. do stuff on each row ..
}
もちろん、バッチでこれを行うためにページングクエリを実装できますが、最初のアプローチで述べたようにそれを行う方が簡単です。mysql はこれを内部的に行うのでしょうか、それともクエリ結果セット全体を最初にメモリにロードしようとしますか?
ありがとう