一次B树索引转BITMAP索引

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

《一次B树索引转BITMAP索引》

2 模仿生产环境,看看这个索引范围扫描的cost有多少。发现和全表扫也没什么区别
《一次B树索引转BITMAP索引》

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

《一次B树索引转BITMAP索引》

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
《一次B树索引转BITMAP索引》

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—-

    原文作者:B树
    原文地址: https://blog.csdn.net/stephen11111/article/details/52998301
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞