public IEnumerable<InternalId> Execute(Transaction transaction)
{
var queriesByCost = queries.OrderBy(_ => _.EstimatedQueryCost(transaction));
return
queriesByCost
.Skip(1)
.Aggregate(
queriesByCost.First().Execute(transaction).Materialize(),
(matching, query) => matching.Intersect(query.ExecuteInsideIntersect(transaction, matching)).Materialize()
);
}