Async controllers in Asp.Net MVC

async/await is all about freeing up threads
On GUI applications, it's mainly about freeing up the GUI thread so the user experience is better.

Asynchronous Programming means parallel programming. By using Asynchronous Programming,
the compiler can execute multiple functions/methods at same time without blocking any function/method.

Asynchronous action methods are useful when an action must perform several independent long running

Suppose we have three operations which takes 400, 600 and 800 milliseconds. With the synchronous call, total response time would be slightly more than 1800 milliseconds. However, if the calls are made asynchronously (in parallel), total response time would be slightly more than 800 milliseconds, because that is the duration of longest task/operation.
Use async/await if and only if you do an IO operation, like connecting to DB or external service webservice.
Always prefer async calls to DB.
Each time you query the DB.