Include(Posts) + Include(Contributors)
one blog · 30 posts × 20 contributors
600 rowsfor one blog
549 of them carry nothing new
the same query + AsSplitQuery()
one blog · three statements, no pairing
blogs
posts
contributors
51 rowsfor one blog
every row is a row you wanted
rows6,000→510
column data1,611 KB→78 KB
materialise~18 ms→~1.2 ms
round trips1→3 the price
and in EF 10 it stopped being a correctness risk — Skip/Take, inside the subquery that feeds the second statement:
EF 9.0.19ORDER BY "b"."Name" — two blogs sharing a name can land in a different order in each statement
EF 10.0.11ORDER BY "b"."Name", "b"."Id"