製品アップデート
製品お知らせ
outline "sql" set outline_info "outline";outline reset ""; outline reset all;outline flush;create table t1(a int, b int, c int, primary key(a));create table t2(a int, b int, c int, unique key idx2(a));create table t3(a int, b int, c int, unique key idx3(a));
パラメータ名 | 動的 | タイプ | デフォルト | パラメータ値の範囲 | 説明 |
cdb_opt_outline_enabled | yes | bool | false | true/false | outline機能の有効化状態 |
outline "sql" set outline_info "outline";。outline_infoの後の文字列は"OUTLINE:"で始まり、"OUTLINE:"の後にHINTを追加したSQLが続く必要があることに注意してください。例えば、select * from t1, t2 where t1.a = t2.aというSQLに対して、t2テーブルのa列にインデックスを追加する場合です。outline "select * from t1, t2 where t1.a = t2.a" set outline_info "OUTLINE:select * from t1, t2 use index(idx2) where t1.a = t2.a";
outline "sql" set outline_info "outline";。outline_info の後の文字列は "OPT:" で始める必要があり、"OPT:" の後に追加する optimizer hint 情報を記述します。例えば、select * from t1 where t1.a in (select b from t2) という SQL に MATERIALIZATION/DUPSWEEDOUT の SEMIJOIN を指定する場合などです。outline "select * from t1 where t1.a in (select b from t2)" set outline_info "OPT:2#qb_name(qb2)";outline "select * from t1 where t1.a in (select b from t2)" set outline_info "OPT:1#SEMIJOIN(@qb2 MATERIALIZATION, DUPSWEEDOUT)";
つまり "OPT:1#max_execution_time(1000)")。outline "sql" set outline_info "outline";。outline_info の後の文字列は "INDEX:" で始める必要があり、"INDEX:" の後に追加するインデックスヒント情報を記述します。
以下に例を示します:select * from t1 where t1.a in (select t1.a from t1 where t1.b in (select t1.a from t1 left join t2 on t1.a = t2.a)) という SQL のクエリブロック 3 において、データベース test の t1 テーブルに USE INDEX のインデックス idx1 を FOR JOIN タイプで追加する場合です。outline "select * from t1 where t1.a in (select t1.a from t1 where t1.b in (select t1.a from t1 left join t2 on t1.a = t2.a))" set outline_info "INDEX:3#test#t1#idx1#1#0";
例:"INDEX:2#test#t2#idx2#1#1" は、2番目のクエリブロック内のtest.t2テーブルに、タイプがUSE INDEX FOR JOINであるidx2インデックスをバインドすることを表します)。outline reset "sql";。例:select * from t1, t2 where t1.a = t2.aのoutline情報を削除する場合:outline reset "select * from t1, t2 where t1.a = t2.a";。outline reset all。実行文は次のとおりです:outline reset all;。フィードバック