|
ここで使用されている用語の定義については、用語を参照してください。
特定の状況下で、SELECT ステートメントを実行した場合、このリリースのデータベース エンジンはクライアントに対し、結果の行セットの最初の 2 行をあらかじめ取得しようとします。この事前取得により、ゼロ行または 1 行の結果セットからデータを取得するパフォーマンスが著しく改善されます。
結果セットが複数の行から成り、最初のデータ取得操作で要求される行が結果セットの最初の行でない場合、たとえば最後の行である場合には、行の事前取得は著しく時間を無駄にします。このため、事前取得がもたらす利点が意味を成さないケースを回避する一方、利点をもたらすケースでのパフォーマンスの改善を目指すため、事前取得は最大 2 行に制限されています。
事前取得は、クライアント DSN 用の詳細な接続属性で[配列フェッチ]が有効になっている場合にのみ行われます(「クライアント DSN 用の詳細な接続属性」を参照してください)。配列フェッチは事前取得と似ていますが、配列フェッチは最初の明示的なデータ取得操作が実行されるまでは行われない点が異なります。この違いは、最初の明示的なデータ取得操作により、データベース エンジンが残りの結果セットを取得する方法を推定できるだけの情報が提供されるためです。たとえば、最初のデータ取得操作が ODBC API の SQLFetch 呼び出しであった場合、これにより、データベース エンジンは結果セット全体を一度に 1 レコードずつ前方へ取得していくことが確実に推定できます。このように推定できるのは、ODBC の仕様によると、SQLFetch を使用した場合は残りの結果セットも同様に SQLFetch で取得されることが必要となるためです。一方、SQLExtendedFetch が呼び出され、行セットのサイズが 1 より大きい場合には、クライアントは開発者が最適な行セット サイズを指定したものと推定し、配列フェッチによってその設定を無効にしません。
事前取得は、次の条件のすべてが満たされた場合に起こります。
|