SQL Anywhere は、サブクエリを処理すると、結果をキャッシュします。このキャッシュは要求ごとに行われるので、キャッシュされた結果が同時に実行された要求や接続の間で共有されることはありません。同じ相関値のセットについてサブクエリの再評価が必要な場合、SQL Anywhere ではキャッシュから結果を取り出すだけで済みます。このようにして、SQL Anywhere は、何度も繰り返される冗長な計算を避けます。要求が完了すると (クエリのカーソルが閉じられると)、SQL Anywhere はキャッシュされた値を解放します。
クエリの処理が進むに従って、SQL Anywhere は、キャッシュされたサブクエリの値が再使用された頻度をモニターします。相関変数の値がめったに繰り返されない場合、SQL Anywhere は、ほとんどの値を 1 回しか計算する必要がありません。このような場合、SQL Anywhere は、一度しか発生しない数多くのエントリをキャッシュするよりも、たまに重複する値を再計算する方が効率的であると判断します。そのため、データベースサーバーは文の残りの部分についてこのサブクエリのキャッシュを中断し、外部クエリブロック内のすべてのローに関するサブクエリの再評価を開始します。
従属カラムのサイズが 255 バイトを超える場合も、SQL Anywhere はキャッシュを行いません。その場合、クエリを書き換えるか、または別のカラムをテーブルに追加して、操作をより効率的にします。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |