We have a simple 3 tier application built in Angular, .Net Core 3.1 Web API, and Azure Cosmos database.
This application gathers large amounts of data, including geo location (lat and long), which then users can query and view via the Angular app.
Our problem is that need to query the full dataset to visualize it in a map and we're running into significant performance issues when querying the data.
There are currently 2.5 million records in the database, and it takes ~10 mins to pull them all, with a RU configuration of 200000 RUs. Note, the documents being returned are fairly small, only 4 attributes including the id which is a GUID. Total response size for the 2.5 mill is just under 100MB
After the latest test, had a look at App Insights and got the following data.

It's obvious we don't have an issue with RUs, that means our code/implementation is not harnessing the full power of the allocated throughput.
Below the code we use to pull the records. We've made some modifications based on this post but so far nothing has made an impact.
If anyone can suggest any changes to our implementation that would be highly appreciated.
public async Task<List<object>> RunQuery(string query, string tenantAcronym)
{
CosmosClient client = new CosmosClient(_endpoint, _accountKey);
var cosmosDatabase = client.GetDatabase(_databaseId);
Container container = cosmosDatabase.GetContainer(tenantAcronym);
QueryRequestOptions options = new QueryRequestOptions() { MaxBufferedItemCount = -1 };
options.MaxConcurrency = -1;
var resIterator = container.GetItemQueryIterator<object>(
new QueryDefinition(query, requestOptions: options)
);
var res = new List<object>();
while (resIterator.HasMoreResults)
{
var response = await resIterator.ReadNextAsync();
res.AddRange(response);
}
return res;
}