seakingstar 2017-05-09 03:51 采纳率: 0%
浏览 3671

Oracle分区的适用场景以及与分表的效率对比

最近遇到一个大表,数据行数在7亿行,13列。关键列有人员编号、项目编号、金额、批号、项目应支年月、项目实支年月。该表中大约95%的数据批号都是有值的。

大约3000W行批号为空的数据,且每月系统都会产生项目应支年月为当前年月的数据,大约900W行,批号为空;每月会办理的一项关键业务是将应支年月为当前年月的

数据打上批号(也会有一些应支年月为当前年月之前的也需要打上),也就是在3000W批号为空的数据中取,其中不到1000W的数据。
表中人员大约有50W人,项目编号总共有100多项,年月从200601开始到现在,项目应支年月在数据插入时就会写入,且不会被修改,项目实支年月会跟随批号同时写

入。取批号为空的数据时,会根据出途径不同分为10多个批次取数(不同途径的人数不同,最大的一种途径有15w人,小的只有1000人左右)。
以上是背景。
为能快速取出批号为空的数据,在表上建立了批号的索引(nvl(ph, 0)),人员编号的索引。
在实际使用中,发现大的支出途径使用批号的索引比较快,小的支出途径使用人员编号的索引比较快;后来尝试在批号上建立空与非空的索引,效果也不好。最终优

化的方案为将此表拆为两个表:批号空的一个表(大约3000W数据),非空的一个表(大约6亿7万)。每次取数时,从批号空的表中取数。定期将打上批号的数据挪到

另一个表中。虽然这样优化带来了很多代码修改的问题,但速度问题却得到了根本解决。
想请教问题,1、为什么大的支出途径使用批号的索引比较快,小的支出途径使用人员编号的索引比较快?
2、oracle分区使用的场景是什么?基本原理是怎样的?最好能有官方说明
3、分区与拆分表与的区别,为什么拆分表的方式比分区效果更好?
多谢

  • 写回答

1条回答 默认 最新

  • threenewbee 2017-05-09 16:09
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗
  • ¥15 钢筋实图交点识别,机器视觉代码
  • ¥15 如何在Linux系统中,但是在window系统上idea里面可以正常运行?(相关搜索:jar包)
  • ¥50 400g qsfp 光模块iphy方案
  • ¥15 两块ADC0804用proteus仿真时,出现异常
  • ¥15 关于风控系统,如何去选择
  • ¥15 这款软件是什么?需要能满足我的需求
  • ¥15 SpringSecurityOauth2登陆前后request不一致