There are two stages in Hash-Semi-Join:
- build: The inner table is used for the hash table for rapid searching matching rows.
- probe: The outer table is used for the probe table. Each record of the probe table is applied the same hash function on the joining column and will be hit the corresponding entry in the hash table. If a record of probe table first matches with a row in the hash table, it will be output and never output again even if it matches again.