GBase 8a
性能调优
文章

SQL合并类优化——不同数据统计周期合并为一条SQL语句

发表于2024-11-16 10:18:5461次浏览2个评论

某业务现场存储过程中的多步骤执行SQL优化思路:
银利多业务场景涉及存款、大额存单、理财、基金、保险、贵金属多个统计指标,有18条SQL语句。又分别统计7天交易,15天交易,30天交易,60天交易,共计18*4=72条SQL语句。是现场比较典型的应用开发场景,特点是步骤多,但每步执行时间都不长。 条件如下:          

                

优化思路是将7天交易,15天交易,30天交易,60天交易通过case when判断出明细一次性汇总,避免相同的SQL分多步骤反复执行。

举例有以下明细表:

             

通过case when 判断明细数据是否属于交易周期,
对于统计个数类的,满足条件标记为1,不满足条件标记为0
case when d_time between @startdate and adddate(@startdate, 7) then 1 else 0 end as p7_cnt, 
对于统计求和的,满足条件标记为数值列值,不满足条件标记为0
case when d_time between @startdate and adddate(@startdate, 7) then AMT else 0 end as p7_amt, 
例如通过SQL获得的自'2023-10-01'起不同交易周期的明细结果如下:

汇总结果如下:

可通过1条SQL语句按id分组统计7天、15天、30天、60天交易的笔数和金额总和。

评论

登录后才可以发表评论
用户头像
levvel发表于 7个月前
看完收获很大!
崔哥发表于 2个月前
春风倚棹阖闾城,水国春寒阴复晴。细雨湿衣看不见,闲花落地听无声。日斜江上孤帆影,草绿湖南万里情。东道若逢相识问,青袍今已误儒生。