Join primitives are summarized in the following table:
Hash-Join-MPU | It performs hash join with a multi-process-unit design, and stores only the hash table in URAM. The small table is cached in DDR/HBM banks during execution. |
Hash-Join-v3 | The storage of the small table is optimized and provides an efficient way to handle hash overflow. Overall, it has better performance than Hash-Join-v2. |
Hash-Join-v4 | Implements a bloom filter in hash join to further improve the efficiency in accessing the small table which is cached in DDR/HBM. |
Hash-Semi-Join | It performs hash semi join based on the framework of Hash-Join-MPU , in which the Join function is replaced by Semi-Join function. |
Hash-Anti-Join | It performs hash anti join based on the framework of Hash-Join-v3 , in which the Probe and Join function is redesigned to realize the logic of Anti-Join. |
Hash-Multi-Join | It can use a parameter as control flag to perform hash join, hash semi-join, and hash anti-join. It also shares the most of the logic in Hash-Join-v3 . |
Merge-Join | It performs inner join with two tables both presorted with the join key. |
Merge-Left-Join | It performs left join with two tables both presorted with the join key. |
Nested-Loop-Join | On the FPGA, hash-based joins are typically preferred with unique keys, and a nested loop is often used to join a table with duplications with another table. |