クエリ高度:クエリ処理のフェーズこの項では、文の注釈フェーズから実行完了までの各フェーズについて説明します。オプティマイザーの設計の基本となる仮定条件について説明し、次に選択性推定、コスト推定、クエリ処理のステップについて説明します。クエリ処理のフェーズを経由します。変換、非マテリアライズドビュー展開などに使用されます。このフェーズの出力は、解析ツリーの形式で書き換えられたクエリで、元のクエリで参照されるすべてのオブジェクトに対する注釈が含まれます。このフェーズでは、クエリに対して反復的なセマンティック変形を実行します。このフェーズで適用されます。このフェーズのセマンティック変形は、解析ツリー表現にヒューリスティックに適用されるセマンティック変形規則に従って実行されます。データベースサーバーによってプランがキャッシュ済みのクエリは、このクエリ処理のフェーズをスキップします。単純な文もこのフェーズをスキップする場合があります。オプティマイザーのバイパスでヒューリスティックプラン選択を使用する文の多くは、セマンティック変形フェーズで処理されません。文の複雑さによって決まります。最適化フェーズでは、クエリの別の内部表現であるクエリ最適化構造体を使用します。クエリ最適化構造体は、解析ツリーから構築されます。データベースサーバーによってプランがキャッシュ済みのクエリは、このクエリ処理のフェーズをスキップします。単純な文もこのフェーズをスキップする場合があります。つのサブフェーズに分かれています。最適化前フェーズは、後から列挙フェーズで必要になる情報を最適化構造体に設定します。このフェーズでは、クエリを分析し、クエリアクセスプランで使用できる関連するインデックスとマテリアライズドビューをすべて検出します。このフェーズでは、ビューマッチングアルゴリズムにより、クエリのすべてまたは一部を満たすために使用可能なすべてのマテリアライズドビューが特定されます。オプティマイザーは、クエリの述部分析を基にして、クエリのテーブルをジョインするために列挙フェーズで使用可能な代替のジョイン方式を構築します。このフェーズでは、最適なクエリアクセスプランに関する決定は行われません。このフェーズの目的は、列挙フェーズの準備です。このフェーズでオプティマイザーは、最適化前フェーズで生成した構成要素を使用して、クエリの可能なアクセスプランを列挙します。検索領域は非常に大きいため、オプティマイザーは生成に独自の列挙アルゴリズムを使用し、生成されたアクセスプランを削除します。プランごとにコスト推定が計算されます。コスト推定は、それまでの最適なプランと現在のプランとを比較するために使用されます。この比較時に、コストの高いプランは廃棄されます。操作など)、中間結果のロー数の予測値、最適化ゴール、キャッシュサイズなどが考慮されます。列挙プランの出力は、クエリの最適なアクセスプランです。プラン構築フェーズでは、最適なアクセスプランを利用して、クエリの実行に使用するクエリ実行プランの対応する最終表現を構築します。プランビューアーで、プランのグラフィカルバージョンを表示できます。グラフィカルなプランにはツリー構造があり、各ノードは特定の関係代数演算を実装する物理演算子です。操作を実装する物理演算子です。データベースサーバーによってプランがキャッシュ済みのクエリは、このクエリ処理のフェーズをスキップします。クエリの結果は、プラン構築フェーズで構築されたクエリ実行プランを使用して計算されます。