Оптимизация запросов Cosmodb - PullRequest
0 голосов
/ 31 января 2020

Я работаю в приложении MVC, а бэкэнд - Azure Cosmo db. У меня есть большие значения в Cosmo DB. Моя заявка основана на графическом представлении баллов. Таким образом, он содержит несколько фильтров на основе даты, месяца или года. Проблема заключается в том, что когда я фильтрую данные по месяцам (выборка данных за один месяц) или по году, для извлечения данных требуется слишком много времени.

`for (int i = 1; i < yearDays; i++)
{
 var dateofOccurance = DateTime.Now.AddDays(-yearDays + i);
 after = DateTime.Now.AddDays(-yearDays + i);

 string dateePrev = fp.DateofOccurance.ToString("yyyy-MM-dd") + "T00:00:00";
 string dateeAfter = after.ToString("yyyy-MM-dd") + "T23:59:59";
 var query= "SELECT AVG(c.Score) as Score, AVG(c.Amount) as Amount  FROM c 
 WHERE c.DeviceId =" + Id + " AND c.DateTimeStamp > \'" + dateePrev + "\' AND c.DateTimeStamp < \'" + 
 dateeAfter + "\'";
  IEnumerable<Data> data= await GetItemsAsync(query: query);
}

   public async Task<IEnumerable<Data>> GetItemsAsync(string queryString)
    {
        try
        {
            var query = this._container.GetItemQueryIterator<Data>(new QueryDefinition(queryString));
            List<Data> results = new List<DataPoint>();
            while (query.HasMoreResults)
            {
                var response = await query.ReadNextAsync();
                results.AddRange(response.ToList());
            }
            return results;
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
            throw;
        }

    }

`

Это займет слишком много времени. Почти 80 тысяч записей будут загружаться в месяц. Есть какое-нибудь решение для увеличения скорости или получения данных одним запросом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...