CREATE OUTLINE 
===================================



描述 
-----------

该语句用来创建 OUTLINE。可以通过两种方式创建，一种是通过 SQL_TEXT(用户执行的带参数的原始语句)，另一种是通过 SQL_ID 创建。
**说明**



创建 OUTLINE 需要进入对应的 DataBase 下执行。

格式 
-----------

* **使用** **SQL_TEXT 创建** **OUTLINE** 




```javascript
CREATE [OR REPLACE] OUTLINE outline_name ON stmt [ TO target_stmt ]
```



* **使用** **SQL_ID 创建** **OUTLINE** 




```javascript
CREATE OUTLINE outline_name ON sql_id USING HINT  hint;
```



参数解释 
-------------



|     **参数**     |                                                                                                     **描述**                                                                                                     |
|----------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| outline_name   | 指定要创建的 OUTLINE 名称。                                                                                                                                                                                             |
| OR REPLACE     | 指定 OR REPLACE 后，如果要创建的 OUTLINE 已存在，则会替换原有的 OUTLINE。                                                                                                                                                            |
| stmt           | 一般为一个带有 hint 和原始参数的 DML 语句。                                                                                                                                                                                    |
| TO target_stmt | 如果不指定 TO target_stmt， 则表示如果数据库接受的SQL参数化后与stmt去掉hint参数化文本相同，则将该SQL绑定stmt中hint生成执行计划；如果期望对含有hint的语句进行固定计划，则需要 TO target_stmt 来指明原始的SQL。 **注意** 在使用target_stmt时，严格要求stmt与target_stmt在去掉hint后完全匹配。 |
| sql_id         | 如果sql_id对应的SQL语句已经有hint，则创建OUTLINE指定的hint会覆盖原始语句中所有hint。                                                                                                                                                       |
| hint           | 格式为 /\*+ xxx \*/ 。                                                                                                                                                                                             |



示例 
-----------

* 使用 SQL_TEXT 创建 OUTLINE




```javascript
CREATE OUTLINE otl_idx_c2 
ON SELECT/*+ index(t1 idx_c2)*/ * FROM t1 WHERE c2 = 1;
```





* 使用 SQL_ID 创建 OUTLINE




```javascript
CREATE OUTLINE otl_idx_c2 
ON "ED570339F2C856BA96008A29EDF04C74" 
USING HINT /*+ index(t1 idx_c2)*/ ;
```





注意事项 
-------------

使用 SQL_TEXT 方式创建的 OUTLINE 会覆盖 SQL_ID 方式创建的 OUTLINE，SQL_TEXT 方式创建的优先级高。
