创建oracle的函数式的索引

创建oracle的函数式的索引
在很多情况下,我们希望运用索引来提高效率,可是有时候在列上还得运用函数进行计算,这时如果直接在列上建立索引来使用,会发现索引无效。一般情况下,我们需要把函数等表达式写在等号的右边,如:sal>100*2.5而不是sal/2.5>100。然而有些情况下,我们不能这样处理,必须要使用函数进行计算,这时我们需要应用oracle的函数索引。
1.环境设置
设置启动参数/会话/系统级:
--告诉优化器信任程序员标记的确定性代码
QUERY_REWRITE_INTEGRITY must be set to TRUSTED
--允许优化器使用基于函数的索引重写查询
QUERY_REWRITE_ENABLED must be set to TRUE
COMPATIBLE must set to 8.1.0.0.0 or a greater value
操作如下:
以管理员登陆,sys/xxxx as sysdba
sql>show parameter QUERY_REWRITE_INTEGRITY ;
如果不是TRUSTED,
sql>alter system set Query_rewrite_integrity=trusted;
同样设置其它参数
alter system set query_rewrite_enabled=true;

2.创建函数索引
create index ind_char_xx on table (to_char(xx));

3.重新分析表 analyze
 analyze table yyy compute statistics;
__________________
摘抄:
The table using function-based indexes must be analyzed and the optimizer mode set to CHOOSE or the function-based indexes will not be used. The RULE based optimizer cannot use function-based indexes.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值