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

Join 右/左外部联接在配置单元中的性能不同?,join,hive,Join,Hive,“右外连接”和“左外连接”在蜂巢中的性能是否不同 例如,表A是一个小表。表B要大得多,并在col2上分区 问题1: 选择* 从右外侧连接B开始(A.col=B.col) 其中B.col2>20131001 问题2: 选择* 从左外侧连接B开始(A.col=B.col) 其中B.col2>20131001 查询1只扫描少量分区,但查询2扫描表B的所有分区。这是一个bug还是我遗漏了什么 谢谢>我经历了同样的情况(不知道为什么会这样,bug或特性。我会认为这是一个bug)。由于我大量使用左外联接,因

“右外连接”和“左外连接”在蜂巢中的性能是否不同

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

问题1:
选择*
从右外侧连接B开始(A.col=B.col)
其中B.col2>20131001

问题2:
选择*
从左外侧连接B开始(A.col=B.col)
其中B.col2>20131001

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

谢谢

>我经历了同样的情况(不知道为什么会这样,bug或特性。我会认为这是一个bug)。由于我大量使用左外联接,因此我使用以下解决方法:

SELECT *
FROM A
LEFT OUTER JOIN
  (SELECT *
   FROM B
   WHERE B.COL2 >20131001) ON (A.COL=B.COL)


我正在做蜂巢0.11。。。如果这在以后的版本中得到修复,那将很有趣。

查询1表B是保留的表,所以B的where谓词是下推的

查询2表B不是保留表,因此B的where谓词不会下推。配置单元将 扫描整个表B


查看此以了解更多详细信息

您的意思是分区是通过
col2
(时间)进行的,并且
B.col2>20131001
过滤器不会在第二种情况下修剪分区?你能发布这两个问题的解释计划吗?你还应该阅读并看看你的案例是否符合问题描述。可能重复的
SELECT *
FROM A
LEFT OUTER JOIN B ON (A.COL= B.COL
                      AND B.COL2 > 20131001)