クエリでの最適化ヒントの指定
既定で、InterSystems SQL クエリ・オプティマイザは、高度で柔軟性の高いアルゴリズムを使用して、複数のインデックスを含む複雑なクエリのパフォーマンスを最適化します。大半の場合、このような既定の設定によって最適なパフォーマンスが得られます。一方、InterSystems SQL には、実行プランの手動変更に使用できるヒントが用意されています。ほとんどの場合、インターシステムズのサポート窓口の助言に従い、これらのヒントを使用して最適なクエリ実行プランを構成します。SQL のパフォーマンスについてサポート窓口の助言を得るには "レポート生成" を参照してください。
このようなヒントをクエリ・オプティマイザに提供して、特定の最適化を採用し、他を除外することを指定するには 2 つの方法があります。その 1 つは SELECT 文の FROM 節にキーワードを使用する方法で、もう 1 つはコマンド・オプションを指定する方法です。
FROM 節のキーワード
SELECT 文には FROM 節を使用できますが、特定のクエリ最適化動作を指定するキーワードをその節に記述できます。複数のキーワードを、空白で区切って任意の順序で指定できます。各キーワードの詳細は、"クエリ最適化オプション" を参照してください。
指定できるキーワードは以下のとおりです。
-
%ALLINDEX – 何らかの利点が得られるすべてのインデックスを、クエリ結合順の先頭にあるテーブル向けに使用することを指定します。
-
%FIRSTTABLE – 指定したテーブル名との結合処理をクエリ・オプティマイザで開始することを指定します。
-
%FULL – 最大限のアクセス・パフォーマンスが得られるように、すべての代替結合シーケンスをコンパイラ・オプティマイザで検査することを指定します。
-
%IGNOREINDEX – 指定したインデックスまたは指定した一覧にあるすべてのインデックスをクエリ・オプティマイザでは無視することを指定します。
-
%INORDER – 複数のテーブルを、それを列挙した順序でクエリ・オプティマイザで結合することを指定します。
-
%NOFLATTEN – クエリ・オプティマイザでサブクエリを平坦化しないことを指定します。
-
%NOMERGE – クエリ・オプティマイザでサブクエリをビューに変換しないことを指定します。
-
%NOREDUCE – クエリ・オプティマイザでサブクエリ (またはビュー) をそれを含むクエリとマージしないことを指定します。
-
%NOSVSO – クエリ・オプティマイザで集合値サブクエリの最適化 (SVSO) を実行しないことを指定します。
-
%NOTOPOPT – TOP 節と ORDER BY 節で使用できます。完了した結果セットを最速で取得できるようにクエリを最適化します。
-
%NOUNIONOROPT – 複数の OR 条件向けと UNION クエリに対するサブクエリ向けに用意されている自動最適化を無効にします。
-
%PARALLEL – InterSystems IRIS によるクエリの並列処理を提案します。
-
%STARTTABLEOpens in a new tab – 先頭に列挙したテーブルとの結合処理をクエリ・オプティマイザで開始することを指定します。