请选择 进入手机版 | 继续访问电脑版

count(distinct) 消耗资源过大的解决方案

[复制链接]
菜鸡 发表于 2021-1-2 19:45:49 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
count(distinct) 消耗资源过大的办理方案

  前几天接到个需求,有7个字段 盘算 如下:
select
stat_date
,count(distinct case when datediff(aprv_date,conf_date) = 0 then uuid else null end) as ind_1
from table_1
此中 table_1 大概有 4000万的数据量 ,7个 count(distinct 差点把服务器跑瓦解,半个小时才跑完。
以下是优化过程:
1,对table_1 做字段加工
row_number() over(partition by aprv_date,uuid order by (
case when datediff(aprv_date,conf_date) = 0 then uuid
else null end ) asc ) as ind_1
,case when datediff(aprv_date,conf_date) = 0 then 1 else 0 end
as ind_1_flag
ind_1_flag 是对 datediff(aprv_date,conf_date) = 0 条件的判定
2 ,再对 table_1 分组求和
sum( case when ind_1_flag = 1 and ind_1 = 1 then 1 else 0 end )
这样优化事后,速度会快许多,资源问题也会办理。

来源:https://blog.csdn.net/qq_39466612/article/details/112024646
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题

专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )