有10个部门销售数据表 sales_his 包含2007至今的数据共 1,1755,6405 近亿条数据,大小12400M。现在按照月进行了范围分区和本地局部销售时间索引。 可有些查询还是很慢,这些查询主要是查某个销售部门几个月的销售数据的统计。访问这几个月数据必然扫描其他9个部门该月的数据,一般一个统计要跑上6-15分钟。如何提高统计速度呢?想到了组合分区 用列表+范围分区 可惜oracle 10g 不支持啊!用范围-列表组合分区 不知道oracle 如何去访问呢?

解决方案 »

  1.   


    你的意思我明白  其实我用存储过程把统计数据做好了,用户只要通过页面从结果表取就是了。问题是 那些不定时 复杂性,类似于数据分析的 SQL  得 人工去查!
    所以我没有建立部门ID索引才考虑 组合分区法 因为如此 才能最低减少oracle 访问量!
    现在做了个 rang_list 组合分区执行计划 
    partition rage all
     partition list singel
        table access full 
      

  2.   

    范围-列表 分区 和 列表-范围 分区的 性能 谁比较高  按照上面的查询要求来讲
    如果 列表-范围 分区 要找A部门3个月销售数据  直观理解 先从10个分区中定位到A主分区,然后在定位到3个子分区中。那么oracle 访问比较简单,数据路径很直观。反之  范围-列表 分区 要找A部门3个月销售数据  直观理解 先从40个月的主分区中 找到3个月的分区,然后进入其中个分区 找到A部门子分区,取出数据后。返回到第二个月分区,再找到A子分区 如此重复3次。
    那么 oracle 访问路径就复杂化了。 就不知道 会不会访问不必要的数据呢?