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