説明
このステートメントは、アウトラインを作成するために使用します。作成方法は2通りあります。1つは SQL_TEXT を使用する方法(ユーザーが実行したパラメータ付きの元のステートメント)で、もう1つは SQL_ID を使用する方法です。
説明
アウトラインを作成するには、対応するデータベースに入って実行する必要があります。
SQL_ID が同じ場合、SQL_TEXT を使用して作成されたアウトラインは、SQL_ID を使用して作成されたアウトラインを上書きします。SQL_TEXT の方が優先順位が高いです。
また、OceanBaseデータベースは SQL_ID で異なるSQLを区別しますが、SQL_ID は SQL_TEXT のMD5ハッシュ値です。同じSQLテキストでも、改行やタブが1文字でも違うと、MD5で得られる SQL_ID は異なります。実際の本番システムでは、SQL_ID を使用したアウトラインのバインドを推奨します。
構文
sql_text_stmt:
CREATE [OR REPLACE] OUTLINE outline_name ON stmt [TO target_stmt];
sql_id_stmt:
CREATE [OR REPLACE] OUTLINE outline_name ON sql_id USING HINT hint;
パラメータの説明
パラメータ |
説明 |
|---|---|
| sql_text_stmt | SQL_TEXT を使用してアウトラインを作成するステートメントを表します。 |
| sql_id_stmt | SQL_ID を使用してアウトラインを作成するステートメントを表します。 |
| outline_name | 作成するアウトライン名を指定します。 |
| OR REPLACE | オプションです。OR REPLACE を指定すると、作成しようとするアウトラインが既に存在する場合、既存のアウトラインを置き換えます。 |
| stmt | 一般的には、ヒントと元のパラメータを持つDMLステートメントです。 |
| TO target_stmt | オプションです。TO target_stmt を指定しない場合、データベースが受け付けるSQLがパラメータ化された後、stmt からヒントのパラメータ化テキストを除いたものと同じであれば、そのSQLを stmt のヒントで実行計画を生成してバインドします。ヒントを含むステートメントに対して固定計画を適用したい場合は、TO target_stmt で元のSQLを指定する必要があります。
注意
|
| sql_id | sql_id に対応するSQLステートメントに既にヒントが設定されている場合、アウトラインで指定されたヒントが元のステートメント内のすべてのヒントを上書きします。 |
| hint | アウトラインのヒントを指定します。形式は /*+ xxx */ です。ヒント構文の詳細については、Optimizer Hintを参照してください。 |
例
SQL_TEXTを使用してアウトラインを作成します。obclient> CREATE OUTLINE otl_idx_c2 ON SELECT/*+ index(t1 idx_c2)*/ * FROM t1 WHERE c2 = 1;SQL_IDを使用してアウトラインを作成します。obclient> CREATE OUTLINE otl_idx_c2 ON 'ED570339F2C856BA96008A29EDF04C74' USING HINT /*+ index(t1 idx_c2)*/;