首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >右/左外部联接在配置单元中的性能不同?

右/左外部联接在配置单元中的性能不同?
EN

Stack Overflow用户
提问于 2013-10-25 05:54:07
回答 2查看 21K关注 0票数 -1

“右外部连接”和“左外部连接”在配置单元中的执行方式不同吗?

例如,表A是一个小表。表B要大得多,并且在col2上分区。

问题1:SELECT * FROM A RIGHT OUTER JOIN B on (A.col=B.col) WHERE B.col2>20131001

问题2:SELECT * FROM A LEFT OUTER JOIN B on (A.col=B.col) WHERE B.col2>20131001

查询1只扫描少量分区,但是查询2扫描表B的所有分区。是bug还是我遗漏了什么?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2014-07-16 16:50:56

我经历了同样的事情(不知道为什么会这样,是bug还是特性。我肯定会认为这是一个bug)。由于我经常使用left outer join,所以我使用以下解决方法:

代码语言:javascript
复制
SELECT *
FROM A
LEFT OUTER JOIN
  (SELECT *
   FROM B
   WHERE B.COL2 >20131001) ON (A.COL=B.COL)

代码语言:javascript
复制
SELECT *
FROM A
LEFT OUTER JOIN B ON (A.COL= B.COL
                      AND B.COL2 > 20131001)

我正在开发蜂巢0.11...如果在以后的版本中修复了这个问题,那将会很有趣。

票数 0
EN

Stack Overflow用户

发布于 2014-07-25 09:42:46

查询1表B是保留表,因此B的where谓词是下推的。

查询2表B不是保留表,因此B的where predicate will pushdown.hive将扫描整个表B

有关更多详细信息,请参阅此OuterJoinBehavior

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19577425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档