SQL ステートメントによって返されるデータセットのサイズをバイト単位で知ることは可能ですか?
クエリ自体からデータのサイズを取得できればいいのですが。SQL Plus を使用するようなものを見つけましたが、Java コードでは使用できませんでした。
私はそれをJavaで行う方法があるかもしれないことを知っています。
前もって感謝します。
オブジェクトは、現在の
ResultSet
データ行を指すカーソルを維持します。最初、カーソルは最初の行の前に置かれます。nextメソッドはカーソルを次の行に移動し、ResultSetオブジェクトに行がなくなるとfalseを返すため、whileループで使用して結果セットを反復処理できます。
ResultSet
はコレクションではなく、行単位でデータを取得するために使用されているカーソルの抽象化にすぎません。
では、正確には何が必要ですか?結果を保存するために必要なメモリの量は?データベース内のデータのサイズは?...?なぜそれがいいのでしょうか?
いつでも実行できSELECT COUNT(*) FROM
、行の特定の平均サイズを使用して結果のサイズを見積もります...を使用する代わりにSELECT COUNT(*)
、より複雑な方法を使用できます。最後の要素に移動してResultSet.last()
、行番号を取得しますResultSet.getRow()
。
私はそれをJavaで行う方法があるかもしれないことを知っています、誰かが私にそれを行う方法を教えてもらえますか?
答えは、これを行う簡単な方法はないということだと確信しています。
JDBC抽象化は、データベースドライバーの実装の詳細をユーザーから隠し、結果セットのエンコードに使用されるバイト数は、ドライバー固有のものです。
結果セットがJavaヒープに具体化されると、理論的にはそのサイズを見つけることができます。しかし実際には、結果セット内のすべてのヒープノードをトラバースする必要があります...これは単純な問題ではありません。
COUNT()メソッドはクエリからの行数を提供しますが、それをバイトに変換する方法はありますか?
一言で言えば、いいえ。理論的にもそうではありません。