在HIVE中,「右外連接」和「左外連接」的表現有何不同?右側/左側外部JOIN在HIVE中的表現有所不同?
例如,表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或我錯過了什麼?
謝謝!
你的意思是分區是由'col2' (時間)和'B.col2> 20131001'過濾器不會在第二種情況下修剪分區?你可以發佈兩個解釋計劃嗎? –
您還應該閱讀[MapJoin&Partition Pruning](https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=34015666)並查看您的案例是否符合問題描述。 –