签到成功

知道了

CNDBA社区CNDBA社区

oracle函数索引(function-based index)

2022-06-17 21:02 916 0 原创 oracle
作者: hbhe0316

函数索引是从8i开始提供的,有了函数索引就可以在索引中使用函数或者表达式了。

例:

http://www.cndba.cn/hbhe0316/article/108089
http://www.cndba.cn/hbhe0316/article/108089http://www.cndba.cn/hbhe0316/article/108089

SQL> create table t1 (id varchar2(10));

Table created.

SQL> insert into t1 values('a');
1 row created.

SQL> commit;

Commit complete.

SQL>create index ind_t1 on t1(id);

SQL>select * from t1 where upper(id) = ‘test’;

这样的情况下,这个SQL是不会走索引的,因为在ID上面存在函数UPPER,所以只能走全表扫描。

http://www.cndba.cn/hbhe0316/article/108089

但是利用函数索引,上面的SQL也是可以走索引的。http://www.cndba.cn/hbhe0316/article/108089

http://www.cndba.cn/hbhe0316/article/108089
http://www.cndba.cn/hbhe0316/article/108089


SQL>drop index ind_t1;

SQL>create index ind_t1 on t1(upper(id));

SQL>analyze table t1 compute statistics for table for all indexes for all indexed columns;

打开AUTOTRACE重新执行上面的SQL,可以发现已经可以走索引了。http://www.cndba.cn/hbhe0316/article/108089http://www.cndba.cn/hbhe0316/article/108089http://www.cndba.cn/hbhe0316/article/108089

版权声明:本文为博主原创文章,未经博主允许不得转载。

oracle

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
hbhe0316

hbhe0316

关注

1.只有承认无知,才能装下新的东西; 2.进步来自一点点滴滴的积累; 3.广博让你更优秀,而专业让你无法替代; 4.挫折和失败能够转换为一种财富。

  • 889
    原创
  • 1
    翻译
  • 13
    转载
  • 24
    评论
  • 访问:1178572次
  • 积分:1523
  • 等级:核心会员
  • 排名:第6名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ