オプティマイザ計画

他の多くのリレーショナル・データベースのオプティマイザと同様に、問合せオプティマイザは最も効率的なSQL処理方法の詳細を問合せ実行計画に保存し、アプリケーション開発者と管理者は、これを確認してカスタマイズできます。

実行計画のデータは、TimesTenのSYS.PLAN表に保存され、アクセスする表とその順序、結合する表、使用する索引に関する情報を含みます。ttSqlCmdQueryPlan組込みプロシージャまたはttIsql explainコマンドのいずれかを使用して、最近実行されたSQL文の問合せ計画を表示できます。ユーザーは計画生成オプティマイザ・ヒントを使用して、SYS.PLAN表での実行計画の作成を有効または無効にするように問合せオプティマイザに指示できます。(トランザクション・レベルのヒントの場合は、ttOptSetFlag組込みプロシージャでGenPlanオプティマイザ・フラグを使用し、文レベルのヒントの場合は、SQL文でTT_GenPlanヒントを使用します)。詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』TimesTen問合せオプティマイザを参照してください。

実行計画は、実行するデータベース処理ごとに個別のステップを指定して、問合せを実行します。計画内のステップは複数のレベルに編成されます。レベルでは、次のレベルの1つ以上のステップで必要となる結果を生成するために完了する必要があるステップを指定します。

次の問合せについて考えてみます:

SELECT COUNT(*)
  FROM t1, t2, t3
    WHERE t3.b/t1.b > 1
      AND t2.b <> 0
      AND t1.a = -t2.a
      AND t2.a = t3.a;

この例では、図5-4に示すように、オプティマイザは問合せを個別の操作に分解し、3つのレベルで実行される5つのステップを生成します。