文章目录 1、用GROUP BY替换DISTINCT去重 2、使用MAPJOIN 3、使用DISTINCT+ UNION ALL代替UNION 4、聚合分组时视情况使用GROUPING运算符 5、使用 UNION ALL时可以开启并发执行 6、使用函数进行行转列、列转行 7、表连接优化 8、过滤优化 9、解决数据倾斜 9.1 数据倾斜的表现 9.2 数据倾斜的原因及其解决办法 1、用GROUP BY替换DISTINCT去重 在极大的数据量且有很多重复值时,可以先 GROUP BY 去重,再使用 COUNT()计数,效率要高于 COUNT(DISTINCT) 去重字段的重复值时,使用 GROUP BY 效率也会比 DISTINCT 高 SElECT user_name FROM trade GROUP BY user_name; 2、使用MAPJOIN HSQL中涉及到多张表的JOIN,当有一张表的大小小于1G时,使用MAPJOIN可以明显的提高SQL的效率。 不过需要注意的是,如果最小的表大于1G,使用MAPJOIN会出现OOM的错误。