説明
このステートメントは、あいまいアウトラインを作成するために使用されます。あいまいアウトラインは、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の生テキストを指定します。
説明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(tbl1 idx_col2)*/;
関連ドキュメント
アウトラインの使用例については、計画のバインディングを参照してください。