Join primitives are summarized in the following table:
Hash-Join-MPU | It performs hash join with a multi-process-unit design, and stores only 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 provide 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 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 re-designed 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 pre-sorted with the join key. |
Merge-Left-Join | It performs left join with two tables both pre-sorted with the join key. |
Nested-Loop-Join | On 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. |