ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 函数索引

函数索引

原创 Linux操作系统 作者:oracleclub 时间:2011-12-03 00:01:06 0 删除 编辑


语法:
1,创建函数索引
SQL> create index i_fun on test3(lower(dname)) ;

Index created.

SQL> select INDEX_NAME,INDEX_TYPE,TABLE_NAME,UNIQUENESS from user_indexes;

INDEX_NAME       INDEX_TYPE                     TABLE_NAME UNIQUENES
----------             ------------------------------          ---------- ---------
I_REV         NORMAL/REV                                TEST3      NONUNIQUE
I_FUN         FUNCTION-BASED NORMAL          TEST3      NONUNIQUE
PK_DEPT    NORMAL                                        DEPT       UNIQUE


SQL> explain plan for
  2  select deptno,dname,loc
  3  from test3
  4  where lower(dname)='SALES';

Explained.

SQL> select id,operation,options,object_name,position from plan_table;

  ID OPERATION            OPTIONS         OBJECT_NAME                 POSITION
---- -------------------- --------------- ------------------------- ----------
   0 SELECT STATEMENT                                                                      2
   1 TABLE ACCESS         BY INDEX ROWID  TEST3                              1
   2 INDEX                       RANGE SCAN      I_FUN                                  1

问题:尽管8i就引入了函数索引,但在10g之前的版本中,默认是不使用函数索引的,所以以前都是加hints来强迫CBO来走函数
索引,所以要写很多这样的语句很麻烦,例如:select  /*+ index (I_FUN)*/  from ...........
1g只要设置query_rewrite_enabled  这参数,CBO就认了,而且默认是打开的
SQL> show parameter query_rewrite_enabled

NAME                                 TYPE                             VALUE
------------------------------------ -------------------------------- ------------------------------
query_rewrite_enabled                string                           TRUE

修改query_rewrite_enabled命令:
修改全局级别的:alter system set  query_rewrite_enabled  = true;
修改会话级别的:alter session set query_rewrite_enabled = true;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26465805/viewspace-712651/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 反向键索引
请登录后发表评论 登录
全部评论

注册时间:2011-11-22

  • 博文量
    61
  • 访问量
    82188