Block Nested Loops Join
•Use one page as an input buffer for scanning the inner S, one page as the output buffer, and use all remaining pages to hold ``block’’ of outer R.
–For each matching tuple r in R-block, s in S-page, add      <r, s> to result.  Then read next R-block, scan S, etc.
. . .
. . .
R & S
Hash table for block of R
(k < B-1 pages)
Input buffer for S
Output buffer
. . .
Join Result