4

アプリから各 SQL ステートメントを変更することなく (少なくともたとえば)、結果セットのサイズを制限しようとしています。したがってROWNUM、すべてのクエリに句を追加することはオプションではありません。

SET ROWCOUNTグローバルパラメーター、または少なくともセッションパラメーター( SQLServerのように)を多かれ少なかれ探しています。

アプリは JDBC リソース プールを使用して Oracle に接続するため、SQL 初期 JDBC プールでセッション全体のパラメーターを設定できます。

4

2 に答える 2

3

Statement.setMaxRows メソッドを試してみましたか? これは、指定された最大数がフェッチされた後に行をサイレントにドロップする標準的な JDBC アプローチです。

ただし、パフォーマンスの観点からは、データベースに送信されるクエリを実際に変更することで、より適切なサービスが提供される可能性があります。@MKが示唆するようにすると、オプティマイザにN行のみをフェッチすることを伝えることになります。これにより、オプティマイザがより効率的な計画を選択できる可能性があります。

于 2012-06-19T19:20:36.543 に答える
2

どうしようもないと思います。クエリをラップすることにより、各 executeQuery() 呼び出しを変更する AOP アドバイスを作成できます。

"select * from ( " + origQuery + " ) where ROWNUM <= 5"

しかし、これが私たちが話している一時的またはテスト的なものであることを願っています.

于 2012-06-19T18:32:38.147 に答える