where子句中join vs子查询的性能(配置单元)

4smxwvx5  于 2021-06-27  发布在  Hive
关注(0)|答案(1)|浏览(300)

有人能帮我理解哪种方法最有效吗。
第一张table users_of_interest_table 有一列 users 具有~1000个唯一用户id的。
第二张table 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)
ocebsuys

ocebsuys1#

社区建议使用join子句,但是在我所做的一些测试中,in子句效率更高
您必须自己进行测试,为此使用SQLServer概要文件工具

相关问题