Oracle 函数索引

函数索引的概念:
基于函数的索引也是8i以来的新产物,它有索引计算列的能力,它易于使用并且提供计算好的值,在不修改应用程序的逻辑上提高了查询性能。使用基于函数的索引有几个先决条件:
(1)必须拥有QUERY REWRITE(本模式下)或GLOBAL QUERY REWRITE(其他模式下)权限。
(2)必须使用基于成本的优化器,基于规则的优化器将被忽略。
(3)必须设置以下两个系统参数:
QUERY_REWRITE_ENABLED=TRUE
QUERY_REWRITE_INTEGRITY=TRUSTED

可以通过alter system set,alter session set在系统级或线程级设置,也可以通过在init.ora添加实现。
这里举一个基于函数的索引的例子:
函数索引建立及数据准备:
SQL> create index test.ind_fun on test.testindex(upper(a));
创建索引后执行下列语句,使其生效:
exec dbms_stats.gather_table_stats('用户名', '表名');

索引已创建。


比如说:
一般的索引 create index P_IDX ON TABLE1(COLUMN1);
当执行SELECT * FROM TABLE1 WHERE COLUMN1 = XXX 时会用到索引。
函数索引:CREATE INDEX P_IDX ON TABLE1(SUBSTR(COLUMN1,0,5));
当执行SELECT * FROM TABLE1 WHERE SUBSTR(COLUMN1,0,5) = XXX 时会用到索引。
但执行SELECT * FROM TABLE1 WHERE COLUMN1 = XXX时是不会用到索引的
一般情况下是最好不用建函数索引。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值