1
我知道哈希左外連接的算法是在右表上構建一個哈希表,然後遍歷左表並在哈希表中搜索是否存在匹配,但完全外連接如何工作?在掃描左側表格中的值之後,您仍需要一種方法來獲取右側表格中沒有左側匹配的元組。哈希完全外連接如何工作?
我知道哈希左外連接的算法是在右表上構建一個哈希表,然後遍歷左表並在哈希表中搜索是否存在匹配,但完全外連接如何工作?在掃描左側表格中的值之後,您仍需要一種方法來獲取右側表格中沒有左側匹配的元組。哈希完全外連接如何工作?
在循環遍歷探測記錄時,您將記錄哪些正確的元組在搜索表中找到匹配項。您只需爲匹配的每個布爾值設置一個布爾值爲true。作爲算法的最後一步,您將掃描構建表並輸出以前不匹配的所有元組。
就我所知,還有一種在RDBMS中沒有使用的替代策略:構建左和右元組的組合哈希表。將該表視爲從散列鍵到左元組列表以及右元組列表的映射表。循環遍歷兩個輸入表,並將所有元組添加到散列表中,從而構建該表。在所有元組被消耗完畢後,迭代散列表一次,並相應地輸出相等組(包括所有左元組或全元元組或相等組中所有左元組和全部正元組的交叉積)。
後一種算法適用於內存中的工作負載(如客戶端應用程序中)。前者適用於極其(或不可預知)的大型探測輸入,因此RDBMS使用該輸入。