优化where子句,其中y为y,z为y

时间:2016-12-16 03:17:51

标签: hive hiveql

我只是想知道是否有任何方法可以优化此查询:

 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子句中的两个子查询是相同的,我怀疑该程序将分别运行两个子查询

谢谢!

2 个答案:

答案 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 )