BlueSky0524 2014-06-27 03:11
浏览 1679

Oracle中重复率很高的字段创建B树索引,为什么性能可以得到大幅提升

请教一个让我不解的问题:
我有一张表TT,数据大概是240W,其中的一个字段COL1的值只有‘0’和‘1’两个。现在有如下查询:SELECT COL2,SUM(NVL(COL3,0) * nvl(COL4,0))
FROM TT
WHERE COL1 = '0'
GROUP BY COL2;
在查询耗时大概是 50s。
为了提高性能,在TT表的COL1字段上创建了位图索引,查询耗时变为 2s
但是由于我需要对TT表做大量的Insert和Update操作,位图索引锁表的风险很大,所以只能放弃使用。
因为TT表的数据量还在增大,我们的DBA建议我把这个表修改为分区表,但是,我自己又不想动生产的数据库。所以在COL1上建了一个普通B树索引试了下,发现性能大幅提升,耗时也是2s左右,B树索引起了很大作用。
在我的概念里,重复率高的字段是肯定不适合建B树索引的,强制使用B树索引反而会因为增加索引开销,比全表扫描还要慢些。所以请教各位高手,在COL1字段上建B树索引为什么可以起到这样的效果?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 fluent的在模拟压强时使用希望得到一些建议
    • ¥15 STM32驱动继电器
    • ¥15 Windows server update services
    • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
    • ¥15 模糊pid与pid仿真结果几乎一样
    • ¥15 java的GUI的运用
    • ¥15 Web.config连不上数据库
    • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
    • ¥15 怎么配置广告联盟瀑布流
    • ¥15 Rstudio 保存代码闪退