In part 1 of this series, I laid the foundation to explore the structure of the hash table, as used by the Hash Match operator, by alleging and then proving that a Hash Match (Left Outer Join) returns unmatched rows from the build input in the order in which they are stored in the hash table. This means that we can create queries on carefully curated data to gain insight in the structure of that hash table.
It is now time to use that trick to actually start to explore the hash table. But not without also looking at available documentation and common sense.
Click through for a waltz down memory lane, a graphical interpretation of a hash table, and some tests to see if Hugo is correct.