Nested Loops vs. Hash Joins
Joining A to B, assuming A has a better filter than B (almost certainly true for a correct nested-loops join order):
Nested Loops: For each A, find matching Bs following the indexed join key.
Hash Join: Reach B as if with a single-table query, then line up A-to-B matches on the hash of the join keys.