JDBCを使用してデータベースに依存しないアプリケーションを作成しようとしています。私は今、いくつかのテーブルから上位Nエントリをフェッチする方法が必要です。私はJDBCにsetMaxRows
メソッドがあるのを見ましたが、私はデータベースがすべての結果をプッシュして怖くて、JDBCドライバだけが結果を減らすので、それを使用するのが快適ではないと感じています。 10億行のテーブルでトップ5の結果が必要な場合、これは私の首を壊します(テーブルには利用可能なインデックスがあります)。JDBC setMaxRowsデータベースの使用
データベースの種類ごとに特殊なSQL文を書くことはあまりうまくはありませんが、データベースでクエリプランニングを賢明にし、必要以上に多くの結果を取得させます。
私はsetMaxRows
に頼ってデータベースにあまり働かないように指示できますか?
私は最悪の場合、私が期待したやり方でこれに頼ることはできないと思います。私は主にPostgres 9.1とOracle 11.2に興味があります。だから誰かがこれらのデータベースを使っている経験があれば、前進してください。
良い質問です。 javadocは、 "このStatementオブジェクトによって生成されたResultSetオブジェクトが指定された数に含まれる最大行数の制限を設定します。制限を超えると、余分な行は静かに破棄されます。私がそれを読んだところ、それはJDBCドライバが作業を行うことができることを意味します。私はそのJDBC実装が依存していると考えています。 –