説明
このステートメントは、あいまいアウトラインを作成するために使用します。あいまいアウトラインは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ハッシュを適用して生成されます。
V4.4.2バージョンでは、V4.4.2 BP3バージョンからFormat OutlineはテキストプロトコルとPSプロトコル(Prepared Statement Protocol)の両方のシナリオをサポートしています。
構文
/* 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 に基づき、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)*/;
関連ドキュメント
アウトラインの使用例については、プランのバインドを参照してください。