ADVISE_INDEX

说明

给定一条或多条SQL语句,生成推荐结果

语法

advise_index ::=

参数

sqls

SQL语句字符串,以';'分割多条SQL语句

返回值

若成功推荐索引,则返回TRUE;否则返回FALSE。

注解

1.通过 advise_index_result 函数查看具体推荐结果。

2.在一个环境中,只能执行一次advise_index函数。

3.若索引推荐失败,可通过ADVISE_INDEX_INFO视图中msg字段查看具体原因说明。

示例

-- 创建表
create table t1(a int, b int);
create table t2(a int, b int);
create table t3(a int, b int);

-- 创建推荐索引环境
select advise_index_begin(4, 8192);
 ADVISE_INDEX_BEGIN
--------------------
 t
(1 row)

-- 执行推荐索引命令
select advise_index('select * from t1 where a=1;select * from t2 where b = 3;select * from t3 order by a, b');
 ADVISE_INDEX
--------------
 t
(1 row)

-- 使用视图查看索引推荐的结果
select * from ADVISE_INDEX_RESULT;
 ID | TABLE_SCHEMA | REL_NAME | COL_NAME |                   CREATE_SQL
----+--------------+----------+----------+------------------------------------------------
  1 | SYSDBA       | T3       | A,B      | CREATE INDEX ADV_IDX_T3_A_B ON SYSDBA.T3(A,B);
  2 | SYSDBA       | T1       | A        | CREATE INDEX ADV_IDX_T1_A ON SYSDBA.T1(A);
  3 | SYSDBA       | T2       | B        | CREATE INDEX ADV_IDX_T2_B ON SYSDBA.T2(B);
(3 rows)

-- 清理推荐索引环境
select advise_index_end();
 ADVISE_INDEX_END
------------------
 t
(1 row)