説明
このステートメントは、あいまいアウトラインを作成するために使用されます。あいまいアウトラインの作成方法は2つあります。1つは FORMAT_SQL_TEXT を使用する方法(ユーザーが実行したパラメータ付きの元のステートメント)で、もう1つは FORMAT_SQL_ID を使用する方法です。
使用上の制限と注意事項
アウトラインの作成は、対応するユーザーの下で実行する必要があります。
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のマッチングルールは、パラメータの変更、大文字小文字の違い、およびスペースや改行などの構文的でない記号の違いを無視します。`in` 式については、これらの処理を施した後のテキスト内容のみを比較するために正規化されます。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)*/;
関連ドキュメント
アウトラインの使用例については、プランのバインドを参照してください。