Few things that I encountered :-
- If you have a one to one mapping you can use the join so that you get all the fields with one query itself.
- If you have multiple records for the root you would use the sub entity which would probably create a multivalued field.
- Sub entities fire a query for each of the records and hence are slower in performance.
Would like to hear from Other users as well.