三種 Join 的左右表慣例稱呼

2021-09-17 23:17:32 字數 740 閱讀 1194

對於 nested loop join,左表稱為 outer table,又稱 driving table,右表稱為 inner table

對於 hash join,左表稱為 build table,右表稱為 probe table

對於 merge join,左表稱為 first table,右表稱為 second table

對於 nested loop join,outer table 和 inner table 概念是怎麼來的呢?我有時會弄混,直到學會了下面的理解方法。不妨考慮兩層 for 迴圈:

foreach (i in m)

foreach (j in n)

if (i == j) print "match";

上面**的意思是對於集合 m 中的每乙個 i,在集合 n 中尋找和 i 相等的值。m 就是 outer table, n 就是 inner table。這種情況下, inner、outer 的概念就非常清晰自然了。

對於 hash join,理解了 hash join 的實現方法,就自然理解 build、probe 的概念了。簡而言之,就是用左表 build 乙個 hashtable,用右表的每一行去 probe 看是否命中,命中則表示 row match。

merge join 就沒什麼好說的了。左右表之間沒什麼優先順序,那就取名 first second 好了,如果下面的表更多,來個 third 也是可以的,那就是 multi-way merge join 了。

Hive的三種Join方式

reduce join在hive中也叫common join或shuffle join 如果兩邊資料量都很大,它會進行把相同key的value合在一起,正好符合我們在sql中的join,然後再去組合,如圖所示。1 大小表連線 如果一張表的資料很大,另外一張表很少 1000行 那麼我們可以將資料量少的...

Hive的三種Join方式

hive reduce join在hive中也叫common join或shuffle join 如果兩邊資料量都很大,它會進行把相同key的value合在一起,正好符合我們在sql中的join,然後再去組合,如圖所示。1 大小表連線 如果一張表的資料很大,另外一張表很少 1000行 那麼我們可以將...

Hive Hive的三種Join方式

hive中的join可分為三種,分別是map join reduce join和smb join,本文簡單介紹這三種join的原理和機制。mapjoin的主要意思就是,當鏈結的兩個表是乙個比較小的表和乙個特別大的表的時候,我們把比較小的table直接放到記憶體中去,然後再對比較大的 進行map操作。...