Two collection Includes on the same entity

are a cross product, not two joins.

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"
measured: EF Core 10.0.11 · SQLite · 10 blogs × 30 posts × 20 contributors
gdhami.net