クエリの自動簡素化¶
実行エンジンでは、クエリを実際に実行する前にクエリの簡素化が試みられます。その目的は、利点が必ず得られる最適化手法を適用することによって、クエリを最適化することにあります。その手法として、冗長な操作の削除や可能な範囲での外部結合から内部結合への変換などがあります。これらの最適化は必ず適用されることから、静的最適化と呼ばれます。
ここでは、きわめて重要な静的最適化について説明します。
クエリの自動簡素化は、デフォルトで有効になっていますが、[Administration] メニュー > [Server configuration] の [Queries optimization] ダイアログで無効化できます (「 クエリの最適化 」を参照)。
特定のデータベースでこの最適化を有効または無効にするには、[Administration] メニューで [Database management] をクリックし、目的のデータベースを選択して [Edit] をクリックします。つづいて、[Automatic simplification of queries] で [on] または [off] をクリックして [Ok] をクリックします。このダイアログの [Automatic simplification of queries] で [Default] が選択されている場合、データベースの構成は [Queries optimization] ダイアログで定義されています。
実行エンジンで実行される簡素化のいくつかを以下に挙げます。
クエリの冗長な分岐を除外します。「 クエリの冗長な分岐の除外 (分割和結合) 」を参照してください。
クエリの結合を並べ替えて、ソースに委任される操作を多くします。結果がデカルト積になる場合、演算そのものが非効率的であることから、この最適化は実行されません。
外部結合から内部結合への変換が可能であれば、その変換を実行します。シナリオによっては、結合結果が変化することなく、いくつかの外部結合を簡素化して内部結合にすることができます。
GROUP BY 操作を結合ビューよりも下位にプッシュダウンします。「 結合ビューよりも下位への GROUP BY ビューのプッシュダウン 」を参照してください。
GROUP BY 操作を和結合ビューよりも下位にプッシュダウンします。「 和結合ビューよりも下位への GROUP BY ビューのプッシュダウン 」を参照してください。