[TOC] # ALTER OUTLINE ## 描述 该语句仅支持使用SQL\_TEXT创建的 OUTLINE,可用于添加绑定OUTLINE和限流规则。 ## 格式 ~~~ ALTER OUTLINE outline_name ADD stmt [ TO target_stmt ] ~~~ ## 参数解释 <table data-tag="table" id="table-ile-ffg-9vh" class="table"><colgroup width="360" span="1" data-tag="col" id="col-5lj-jyf-apm" colwidth="1*" colnum="1" colname="col1" style="width:50%" class="col"></colgroup><colgroup width="360" span="1" data-tag="col" id="col-05f-eqc-fkp" colwidth="1*" colnum="2" colname="col2" style="width:50%" class="col"></colgroup><thead id="thead-c0x-8z0-edx" class="thead"><tr id="tr-8c7-0n1-nh0"><th id="td-93a-6z5-p89"><p id="p-04v-qyq-klp"><b>参数</b></p></th><th id="td-jvb-6pw-he8"><p id="p-jc8-gwr-dkg"><b>描述</b></p></th></tr></thead><tbody data-tag="tbody" id="tbody-wj5-nz8-py5" class="tbody"><tr data-tag="tr" id="tr-vdi-no2-t9k" class="tr"><td data-tag="td" id="td-obe-c9w-dt0" class="td"><p id="p-yy0-mxg-487">outline_name</p></td><td data-tag="td" id="td-fq8-fsc-hd3" class="td"><p data-tag="p" id="p-umi-70r-va8" class="p">指定要创建的 OUTLINE 名称。</p></td></tr><tr data-tag="tr" id="tr-7dx-0h5-dbc" class="tr"><td data-tag="td" id="td-z9h-55b-946" class="td"><p id="p-oq2-wjv-yf8">stmt</p></td><td data-tag="td" id="td-fal-trt-epr" class="td"><p id="p-k71-28d-he5">一般为一个带有 hint 和原始参数的 DML 语句。</p></td></tr><tr data-tag="tr" id="tr-cd3-z1z-9i4" class="tr"><td data-tag="td" id="td-kpz-646-caz" class="td"><p id="p-7x7-ej1-g87">TO target_stmt</p></td><td data-tag="td" id="td-kxt-yon-9pk" class="td"><p data-tag="p" id="p-o4j-hlb-eo7" class="p">如果不指定 TO target_stmt, 则表示如果数据库接受的SQL参数化后与stmt去掉hint参数化文本相同,则将该SQL绑定stmt中hint生成执行计划;如果期望对含有hint的语句进行固定计划,则需要 TO target_stmt 来指明原始的SQL。</p><p data-tag="p" id="p-wtx-eyt-za6" class="p"><span data-mce-style="font-size: 11px" data-tag="span" id="span-1c0-lgb-oav" class="span"><b></b></span></p><div type="notice" id="note-lik-m43-yny" class="note note-notice"><div class="note-icon-wrapper"><i class="icon-note note notice"></i></div><div class="noteContentSpan"><strong>注意 </strong><p id="p-nq1-8z2-z7g"></p><p id="p-67p-m27-px7">在使用target_stmt时,严格要求stmt与target_stmt在去掉hint后完全匹配。</p></div></div><p></p><p data-tag="p" id="p-wtx-eyt-za6" class="p"></p></td></tr></tbody></table> ## 示例 * 通过ALTER OUTLINE来添加限流规则。 ~~~ OceanBase (root@oceanbase)> alter outline ol_1 add select /*+max_concurrent(1)*/ * from t1 where c1 = 1 and c2 = ?; OceanBase (root@oceanbase)> alter outline ol_1 add select /*+max_concurrent(1)*/ * from t1 where c1 = ? and c2 = 1; ~~~ * 通过ALTER OUTLINE来添加执行计划。 ~~~ OceanBase (root@oceanbase)> create outline ol_2 on select /*+max_concurrent(1)*/ * from t1,t2 where t1.c1 = 1; OceanBase (root@oceanbase)> alter outline ol_2 add select /*+use_nl(t2)*/ * from t1,t2 where t1.c1 = 1; ~~~ ## 注意事项 * 同一个outline\_name 只能指定一个执行计划。如果通过create outline语句指定了执行计划,则无法通过执行alter outline时再添加。 * 同create outline类似,在alter outline时不能同时指定限流规则和执行计划。 * 执行alter outline时,需要outline\_name和signature同时匹配。