@@ -302,8 +302,17 @@ const HASH_QUERIES: &[HashJoinQuery] = &[
302302 probe_size : "60M" ,
303303 } ,
304304 // RightSemi Join benchmarks with Int32 keys
305- // Matching ratio: 1:1 (build keys are unique, each probe matches at most 1 build row)
306- // Semi joins can short-circuit after first match, so hit rate affects performance.
305+ //
306+ // Fanout (average build rows matched per probe row, as measured by running
307+ // the equivalent INNER JOIN under `EXPLAIN ANALYZE` and reading the
308+ // `HashJoinExec` metrics): 1 for Q16-Q18. Build keys here are primary
309+ // keys (`n_nationkey`, `s_suppkey`), so each probe row matches at most
310+ // one build row. `prob_hit` controls what fraction of probe rows find
311+ // that one match.
312+ //
313+ // Fanout still matters because semi joins short-circuit after the first
314+ // match. Coverage of fanout > 1 (build-side duplicates) is left for a
315+ // follow-up.
307316 //
308317 // Q16: RightSemi, Small build (25 rows), 100% Hit rate
309318 // Build Side: nation (25 rows) | Probe Side: customer (1.5M rows)
@@ -345,8 +354,17 @@ const HASH_QUERIES: &[HashJoinQuery] = &[
345354 probe_size : "60M_RightSemi" ,
346355 } ,
347356 // RightAnti Join benchmarks with Int32 keys
348- // Matching ratio: 1:1 (build keys are unique, each probe matches at most 1 build row)
349- // Anti joins can short-circuit after first match, so hit rate affects performance.
357+ //
358+ // Fanout (average build rows matched per probe row, as measured by running
359+ // the equivalent INNER JOIN under `EXPLAIN ANALYZE` and reading the
360+ // `HashJoinExec` metrics): 1 for Q19-Q21. Build keys here are primary
361+ // keys (`n_nationkey`, `s_suppkey`), so each probe row matches at most
362+ // one build row. `prob_hit` controls what fraction of probe rows find
363+ // that one match (and are therefore filtered *out* by anti).
364+ //
365+ // Fanout still matters because anti joins short-circuit after the first
366+ // match. Coverage of fanout > 1 (build-side duplicates) is left for a
367+ // follow-up.
350368 //
351369 // Q19: RightAnti, Small build (25 rows), 100% Hit rate (no output)
352370 // Build Side: nation (25 rows) | Probe Side: customer (1.5M rows)
0 commit comments