一次B树索引转BITMAP索引

1 在检查BI库的时候发现ODS_M_in表有一个很奇怪的索引,在ID,status,BILLTYPE上组合了一个索引。

这里写图片描述

2 模仿生产环境,看看这个索引范围扫描的cost有多少。发现和全表扫也没什么区别
这里写图片描述

3 仔细检查,status,和billtype这两列其实可选择性很小,且属于静态列,有插入和选择,但是update操作很少,适合位图索引。

这里写图片描述

4 操作过程。
—- 查看ID列是否可以作为主键。答案是肯定的

select count(id)  from ODS.ODS_M_IN
3837571
select count(distinct id ) from ODS.ODS_M_IN
3837571

—-删除原来的无效索引。

drop index ODS.IDX_ODS_M_IN_1

—- 添加主键。

alter table ODS.ODS_M_IN add constraint pk_id primary key(id )

创建位图索引。

create bitmap index inx_ODS_M_IN_sta_bt on ODS.ODS_M_IN(status,billtype)

5 看看优化之后的sql cost是多少。如下图所示,可以看到提升了很多。下降到113
这里写图片描述

6 最后在需要添加索引的表上,添加索引。

create index         INX_BPL_STAT_DOC    on ODS.ODS_B_PLAN (DOCNO,status,isactive)
create bitmap index INX_DW_AP_AS_APOUTTYEP  on   EDW.DW_AP_AS(APOUTTYEP)
create bitmap index  inx_ODS_M_OUT_sta_bt on ODS.ODS_M_OUT(status,billtype)

—- end—-

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值