多列count(distinct)改写优化

多列count(distinct)改写优化

2 回答

对多列count(distinct), 当前执行计划是先在各节点对参与count(distinct)的列进行group by去重,结果集再汇集到一个节点进行count(distinct)运算。
count(distinct)列很多时,参与group by运算的列也很多,去重效果不理想,导致大量数据要拉到一个节点进行count(distinct)运算,拉表和汇总节点计算耗时非常长。

2018-8-6 10:40
grander 发表于 2018-8-6 10:40
对多列count(distinct), 当前执行计划是先在各节点对参与count(distinct)的列进行group by去重,结果集再汇 ...

优化的方法是改写sql,各列分别计算count(distinct),提高去重效果,然后对结果集进行拼接。
优化前:
select count(distinct col1), count(distinct col2) from tb;
优化后:
select * from
(select count(distinct col1) from tb) a
join
(select count(distinct col2) from tb) b;

2018-8-6 10:41

撰写回答

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

提问者

发布90
回答258

相关问题

相关资料