首页 > 代码库 > distinct 优化
distinct 优化
当数据量非常大,在同一个query中计算多个不相关列的distinct时,往往很容易出现数据倾斜现象,导致运行半天都不能得到结果。
比如以下的SQL语句:
select distinct(a), distinct(b), distinct(c) from tableName;
a, b, c没有相关性。
改进方案:把计算的distinct先group by,然后再计算:
select distinct(t.a), distinct(t.b), distinct(t.c) from( select a, b, c from tableName group by a, b, c;)t;
原理:distinct是在reduce里面计算的,再进行merge,而group by的字段会在map这里分N路hash。group by越多,hash分的越随机。
distinct 优化
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。