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天交易的笔数和金额总和。
热门帖子
- 12025-12-01浏览数:182759
- 22023-05-09浏览数:25044
- 42023-09-25浏览数:18519
- 52020-05-11浏览数:17526