The SQL Server execution plan shows the Lazy spool has 7935322 actual number of rows, but its child operator only has 32 rows.
Nested Loop (Inner Join, 2 rows) <--- Hash match(3967661 rows) ^ | +--- Lazy Spool (7935322 rows) <-- Merge Join (32 rows)
If lazy spool sourced from its child rows as a temp table, it should only have 32 rows at maximum. I don't understand why does it have 7935322 rows.
Lazy Spool properties Actual Rebinds: 16 Actual Rewinds: 3967645 Number of Executions: 3967661 Nested Loop properties: Actual Number of Rows: 2 Number of Executions: 16