Actually there is no way to predict which child actions will be invoked in a view. Also you may have nested calls to child actions, invocations from the Layout, etc.
In you situation I see two ways to optimize performance: 1) Use caching - it will improve performance for the further requests, but not the first one 2) Instead of having only child actions - use partial views. In this case your main Index action will load all necessary items, build a model containing properties MenuItems, Content, RelatedSections and pass them to Index view. Then from index view you will invoke RenderPartial and pass corresponding data as a model to this partial. If you need AJAX functionality to retrieve updated part of the page - then you need to create separate actions for the each partial view.
In a short - use RenderPartial for the normal requests, and Actions for the each view in case of AJAX requests.
If you are not planning to use AJAX - then it's better to use only RenderPartial method, since Action is heavier and will work a little bit slower, since routing, instantioation of a controller, etc is involved to render HTML for child action.