当create table as select 遇上大数据

统计24小时的红包感知专题,有1.5亿行以上的数据,Nokia给出的方法是先按小时执行算法,再汇总各个小时的执行结果。

算法中包含了大量的 sum(case when)计算。

专题里有5个小节,执行计划的时候,需要跑5次where条件不同而查询列相同的sql,需要执行5次sum(case when),很耗时间。

统计一天24小时的数据,需要9个多小时才能计算完成。

--------------于是我想优化这个执行过程--------

我把每小时的数据case when的计算先执行,合并24小时各小时的case when 结果,然后再对合并的执行sum等计算。

发现select时速度很快,sum速度也快,5个小节,执行计划时只要执行一次case when,5次sum,按理速度应该会提高很大。

--------------没想到,现实不是这样的,居然还原来的快----------

找原因,发现问题在 create table xxxx as select 的性能问题

原来的方法虽然执行了5次sum(case when),很耗时间,但因为汇总了数据,create table 的表行数少,创建表的速度快。

-------------

优化后的方法,虽然select速度很快,但是创建表的行太多,24小时有1.5亿行+,这个表好大啊,create table xxxx as  select 的执行耗时比上面的还要多。

于是我醉了,2天的优化,白弄了。大哭大哭大哭大哭大哭


--------下文是create table as select 性能优化方法------

http://blog.csdn.net/yangzhijun_cau/article/details/7396088


可专题工具系统在代码里硬编码了create table as select 的语句,不能加入优化方法里的参数,优化的方法用不上。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

松门一枝花

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值