在 where 子句 (HIVE) 中连接与子查询的性能



有人可以帮我了解哪种方法最有效吗?

第一个表users_of_interest_table有一个列users,其中包含 ~1,000 个唯一用户 ID。

第二个表app_logs_table具有users列和app_log列。 该表有超过 10 亿行和超过 1000 万的唯一用户。

获取users_of_interest中用户的所有应用日志数据的最有效方法是什么? 这是我到目前为止想出的。

选项 1:使用内部联接

SELECT 
u.users, a.app_logs
FROM 
users_of_interest_table u
INNER JOIN 
app_logs_table a
ON 
u.users = a.users

选项 2:Where 子句中的子查询

SELECT 
a.users, a.app_logs
FROM 
app_logs_table a
WHERE 
a.users IN (SELECT u.users FROM users_of_interest_table u)

社区建议使用 Join 子句,但是,在我所做的一些测试中,In 子句更有效

率您必须自己进行测试,为此请使用 SQL Server 配置文件工具

最新更新