GBase 8a
性能调优
文章

GBase 8a集群多列count(distinct)改写优化

发表于2025-04-13 22:51:0498次浏览2个评论

问题现象:

多列count(distinct)性能不足,如:select count(distinct col1), count(distinct col2) from tb;

问题原因:

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

优化方法:

优化的方法是改写sql,各列分别计算count(distinct),提高去重效果,然后对结果集进行拼接。

如:

select * from 
(select count(distinct col1) from tb) a
join
(select count(distinct col2) from tb) b;

评论

登录后才可以发表评论
崔哥发表于 9个月前
嗯,只能说不错!
GBase用户51884发表于 2个月前
谢谢分享