Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
sensitive カーソルは、読み取り専用か更新可能なカーソルタイプで使用されます。
このカーソルには、sensitive なメンバーシップ、順序、値が指定されています。
sensitive カーソルは、ISO/ANSI 規格の sensitive カーソル定義と ODBC の動的カーソルに対応しています。
sensitive カーソルでのプリフェッチは無効です。カーソルを使用した変更や他のトランザクションからの変更など、変更はどれもカーソルを使用して表示できます。上位の独立性レベルでは、ロックを実行しなければならないという理由から、他のトランザクションで行われた変更のうち、一部が非表示になっている場合もあります。
カーソルのメンバーシップ、順序、すべてのカラム値に対して加えられた変更は、すべて表示されます。たとえば、sensitive カーソルにジョインが含まれており、基本となるテーブルの 1 つにある値がどれか 1 つでも修正されると、その基本のローで構成されたすべての結果ローには新しい値が表示されます。結果セットのメンバーシップと順序はフェッチのたびに変更できます。
sensitive カーソルは常に、クエリの選択基準に合ったローを、ORDER BY 句が指定した順序で返します。更新は、結果セットのメンバーシップ、順序、値に影響する場合があります。
sensitive カーソルを実装するときには、sensitive カーソルの稼働条件によって、次のような制限が加えられます。
ローのプリフェッチはできない。プリフェッチされたローに加えた変更は、カーソルを介して表示されないからです。これは、パフォーマンスに影響を与えます。
sensitive カーソルを実装する場合は、作成中のワークテーブルを使用しない。ワークテーブルとして保管されたローに加えた変更はカーソルを介して表示されないからです。
ワークテーブルの制限事項では、オプティマイザーによるジョインメソッドの選択を制限しない。これは、パフォーマンスに影響を及ぼす可能性があります。
クエリによっては、カーソルを sensitive にするワークテーブルを含まないプランをオプティマイザーが構成できない。
通常、ワークテーブルは、中間結果をソートしたりグループ分けしたりするときに使用されます。インデックスからローにアクセスできる場合、ソートにワークテーブルは不要です。どのクエリがワークテーブルを使用するかを正確に述べることはできませんが、次のようなクエリでは必ずワークテーブルを使用します。
UNION クエリ。ただし、UNION ALL クエリでは必ずしもワークテーブルは使用されません。
ORDER BY 句を持つ文。ただし、ORDER BY カラムにはインデックスが存在しません。
ハッシュジョインを使って最適化されたクエリ全般。
DISTINCT 句または GROUP BY 句を必要とする多くのクエリ。
この場合、SQL Anywhere は、アプリケーションにエラーを返すか、カーソルタイプを asensitive に変更して警告を返します。