有10个部门销售数据表 sales_his 包含2007至今的数据共 1,1755,6405 近亿条数据,大小12400M。现在按照月进行了范围分区和本地局部销售时间索引。 可有些查询还是很慢,这些查询主要是查某个销售部门几个月的销售数据的统计。访问这几个月数据必然扫描其他9个部门该月的数据,一般一个统计要跑上6-15分钟。如何提高统计速度呢?想到了组合分区 用列表+范围分区 可惜oracle 10g 不支持啊!用范围-列表组合分区 不知道oracle 如何去访问呢?
解决方案 »
- sql按时间查询
- 各位高手请看一下我的问题,100分不够,再开100分
- oracle 的 jobs 问题?跪求!
- tnsnames中的数据库连接串经常会莫名其妙的丢失,请问会是什么原因?
- 本人在此论坛的第一个问题!安装进行中对数据库进行配置的DOS程序我给终止了~~如何从新启动
- ***********Oracle中的java function和java procdure在性能和管理上一样吗?******
- 关于在PROCEDURE中使用游标的问题!!
- 文件打开问题。
- 使用过实体化视图(materilized view)的请进,谢谢,急,急,急
- Oracle切割字符串sql语句怎么写,请求大佬帮帮忙,感谢!!!
- oracle 安装问题
- 常用DBA工具
你的意思我明白 其实我用存储过程把统计数据做好了,用户只要通过页面从结果表取就是了。问题是 那些不定时 复杂性,类似于数据分析的 SQL 得 人工去查!
所以我没有建立部门ID索引才考虑 组合分区法 因为如此 才能最低减少oracle 访问量!
现在做了个 rang_list 组合分区执行计划
partition rage all
partition list singel
table access full
如果 列表-范围 分区 要找A部门3个月销售数据 直观理解 先从10个分区中定位到A主分区,然后在定位到3个子分区中。那么oracle 访问比较简单,数据路径很直观。反之 范围-列表 分区 要找A部门3个月销售数据 直观理解 先从40个月的主分区中 找到3个月的分区,然后进入其中个分区 找到A部门子分区,取出数据后。返回到第二个月分区,再找到A子分区 如此重复3次。
那么 oracle 访问路径就复杂化了。 就不知道 会不会访问不必要的数据呢?