1

私のデータベースはmysqlサーバーでホストされており、Javaを使用してデータを分析しています。

私の問題: 'Select' クエリを実行すると、2.5 GB の結果セットが返されます。すべてのデータをメモリにロードしたくありません。データを継続的に取得して処理する方法はありますか?

「行による制限」はオプションではありません。b/c この 2.5 GB のデータは結合され、4 つのテーブルから取得されます。したがって、「行ごとに制限」すると、合計実行時間が大幅に増加します。

statement.setFetchSize(50) を試してみましたが、期待どおりに動作していないようでした。

どんな提案でも大歓迎です!ありがとう!

4

2 に答える 2

1

BlockquoteStatement stmt = readOnlyConn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY); stmt.setFetchSize(Integer.MIN_VALUE); 上記のコードは私の問題を解決しました。助けてくれてありがとう!

はい。ただし、postgres を使用している場合は、自動コミットもオフにする必要があります。(作業の 2 時間後に実現 =D )

ここでpostgresのドキュメントを参照してください

于 2016-11-02T16:42:47.527 に答える