我只是想知道是否有任何方法可以优化此查询:
select * from table_x where buyer_id in (select id from table_y) x or
seller_id in (select id from table_y) y
由于我的where子句中的两个子查询是相同的,我怀疑该程序将分别运行两个子查询
谢谢!
答案 0 :(得分:0)
您的查询基本上是:
select x.*
from table_x x
where x.buyer_id in (select y.id from table_y y) or
x.seller_id in (select y.id from table_y y);
这个结构应该没问题。在某些数据库中,您可以使用exists
而不是in
,但我认为Hive可以使用此功能。
答案 1 :(得分:0)
解决hive使用semi left join即
中的多个equerry问题select x.*
from table_x x
LEFT SEMI JOIN table_y b on (x.buyer_id= b.id )
LEFT SEMI JOIN table_y c on (x.seller_id= c.id )