Share via


行セット サイズ

使用する行セットのサイズは、アプリケーションによって異なります。 画面ベースのアプリケーションは、通常、2 つの戦略のいずれかに従います。 1 つ目は、行セットのサイズを画面に表示される行数に設定することです。ユーザーが画面のサイズを変更すると、アプリケーションはそれに応じて行セットのサイズを変更します。 2 つ目に、行セットのサイズを 100 などの大きな数に設定することで、データ ソースへの呼び出しの数を減らすことです。 可能であれば、アプリケーションは行セット内でローカルにスクロールし、行セットの外側をスクロールする場合にのみ新しい行をフェッチします。

レポートなどの他のアプリケーションでは、アプリケーションが適切に処理できる行の最大数に行セットのサイズを設定する傾向があります。行セットが大きくなると、行あたりのネットワーク オーバーヘッドが減少することがあります。 行セットの大きさは、各行のサイズと使用可能なメモリの量によって異なります。

行セットのサイズは、SQL_ATTR_ROW_ARRAY_SIZE の Attribute 引数を使用した SQLSetStmtAttr の呼び出しによって設定されます。 アプリケーションでは、行がフェッチされた後でも、行セットのサイズを変更したり、新しい行セット バッファーをバインドしたり (SQLBindCol を呼び出したり、バインド オフセットを指定したりすることによって)、またはその両方を行うことができます。 行セットのサイズを変更することの影響は、関数によって異なります。

  • SQLFetchSQLFetchScroll は、呼び出し時に行セット サイズを使用して、フェッチする行の数を決定します。 ただし、fetchOrientationSQL_FETCH_NEXT の SQLFetchScroll では、前のフェッチの行セットに基づいてカーソルがインクリメントされ、現在の行セット サイズに基づいて行セットがフェッチされます。

  • SQLSetPos は、SQLSetPos が既に設定されている行セットで動作するため、SQLFetch または SQLFetchScroll の前の呼び出し時点で有効な行セット サイズを使用します。 SQLSetPos は、行セット のサイズが変更された後に SQLBulkOperations が呼び出された場合にも、新しい行セット サイズを取得します。

  • SQLBulkOperations は、フェッチされた行セットとは無関係にテーブルに対して操作を実行するため、呼び出し時に有効な行セット サイズを使用します。