栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Hive SQL之FULL JOIN优化

Hive SQL之FULL JOIN优化

记一次工作中SQL 的FULL JOIN 优化过程

在完成同事交接的一个项目需求迭代的时候,发现了有一段Full Join的代码执行比较慢。

其代码大概如下:

SELECt 
	nvl(a.user_id,b.user_id) AS user_id,
	nvl(a.visit_num,0) AS visit_num,
	nvl(b.comment_num,0) AS comment_num
FORM
(
	SELECT 
		user_id,
		visit_num
	FROM user_visits
) AS a 
FULL JOIN
(
	SELECt
		user_id,
		comment_num
	FROM user_comment
) AS b ON a.user_id=b.user_id;

我现在要迭代一次需求,新增一张user_like表,如果照之前同事的思路,我直接在他原来的SQL代码中再加一段FULL JOIN就可以解决需求问题了,但是这样解决不了性能问题,随着我这次需求的迭代,执行时间只会更慢。

经过思考之后我采用了另一种方式重构了同事原来的代码,重构后的代码如下:

SELECt 
	user_id,
	MAX(visit_num) AS visit_num,
	MAX(comment_num) AS comment_num
FORM
(
	SELECT 
		user_id,
		visit_num,
		0 AS comment_num
	FROM user_visits
	UNIOn ALL
	SELECt
		user_id,
		0 AS visit_num,
		comment_num
	FROM user_comment
)
GROUP BY user_id;

分别观察这个两个SQL对应的执行JOB,如下图所示:

优化前:

优化后:

分别对优化前的SQL和优化后的SQL分别进行10次查询操作,取执行时长平均值。

发现优化前SQL执行平均时长是100s左右,优化后SQL执行平均时长是35秒左右,明显提升了查询的性能。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/775985.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号