説明
このステートメントは、あいまいアウトラインを作成するために使用されます。あいまいアウトラインは、FORMAT_SQL_TEXT (ユーザーが実行するパラメータ付きの元のステートメント) と FORMAT_SQL_ID の2つの方法で作成できます。
制限事項と注意点
アウトラインを作成するには、対応するユーザーにログインして実行する必要があります。
FORMAT_SQL_IDが同じ場合、FORMAT_SQL_TEXTを使用して作成されたアウトラインは、FORMAT_SQL_IDを使用して作成されたアウトラインを上書きします。FORMAT_SQL_TEXTの優先順位が高いです。さらに、OceanBaseデータベースはFORMAT_SQL_IDを使用して異なるSQLを区別し、FORMAT_SQL_IDはFORMAT_SQL_TEXTからMD5暗号化されています。実際の本番システムでは、FORMAT_SQL_IDを使用したアウトラインバインディングを推奨します。説明
FORMAT_SQL_TEXTのマッチングルールは、パラメータ内容、大文字と小文字、およびスペースや改行などの構文上のない記号の違いを無視し、これらの処理後のテキスト内容のみを比較します。FORMAT_SQL_IDは、FORMAT_SQL_TEXT(不要なスペースと改行を削除し、すべての文字を大文字または小文字に統一変換) をフォーマットした後、そのフォーマット結果にMD5ハッシュ暗号化を適用して生成されます。
構文
/* FORMAT_SQL_TEXTを使用してアウトラインを作成 */
CREATE [OR REPLACE] FORMAT OUTLINE outline_name ON format_stmt [ TO format_target_stmt ]
/* FORMAT_SQL_IDを使用してアウトラインを作成 */
CREATE [OR REPLACE] FORMAT OUTLINE outline_name ON format_sql_id USING HINT hint;
パラメータの説明
| パラメータ | 説明 |
|---|---|
| outline_name | 作成するファジィアウトラインの名前を指定します。 |
| OR REPLACE | OR REPLACE が指定され、かつ作成するアウトラインが既に存在する場合、既存のアウトラインを置き換えます。 |
| format_stmt | SQLの生テキスト、すなわちアウトラインを適用したいSQL文または操作を指定します。
説明OceanBaseデータベース内部では、非フォーマットされたSQLテキストを自動的にフォーマットされたSQLテキストに変換します。 |
| TO format_target_stmt | オプションで、format_stmt を変換または適用するターゲットSQL文を指定します。これにより、アウトラインを他のSQL文にも適用できるようになります。TO format_target_stmtオプションを使用して、これらのSQL文を宣言できます。
注意
|
| format_sql_id | バインドするSQLに対応する一連のルールによって書き換えられた format_stmt から、format_stmt に基づいて MD5 値を計算して得られる format_sql_id を指定します。 |
例
FORMAT_SQL_TEXTを使用してアウトラインを作成します。CREATE FORMAT OUTLINE my_outline ON SELECT * FROM employees WHERE department_id = ?;FORMAT_SQL_IDを使用してアウトラインを作成します。CREATE FORMAT OUTLINE my_sql_id_outline ON 'ED570339F2C856BA96008A29EDF04C74' USING HINT /*+ index(t1 idx_c2)*/;
関連ドキュメント
アウトラインの使用例の詳細については、計画のバインディングを参照してください。