对于单表数据超过1亿的数据查询时候,必须默认时间段查询条件

 

项目基本情况

最近系统碰到一个非常头疼的问题,数据库采用oracle10G,主备机模式,采用shareplex做数据同步,一个表销售数据近2亿数据,提供16万企业做服务;

 

问题描述

原始设计时候,给企业查询小孩搜明细的时候,并没有考虑时间段条件,而是按照企业id号进行查询,在一开始,数据量不大时候,没有任何,当数据接近1亿的时候,就出现大问题了,因为有一部分企业的数据量非常大,导致此单独按照此企业查询明细数据时候,数据量比较大,大概会有接近50万数据,因为没有默认时间段查询,查询结果集非常大,结果导致此明细查询的IO消耗非常大,因为默认只有企业ID条件,不管怎么做索引,都无法解决此sql的io性能问题,最终解决方法就是,默认增加时间段条件,默认只查询该企业最新一月时间明细数据,然后企业id和时间段的联合索引才解决此问题,真是一个sql,消耗死一台数据库;

 

结论

在做类似过亿数据量表的应用时候,如果涉及到明细数据查询时候,必须增加默认查询时间(一个月或者按照淘宝的三个月),以减少数据库的IO消耗

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值