首页 > 解决方案 > Cosmodb 查询优化

问题描述

我在 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;
        }

    }

`

太费时间了 每月将获取近 8 万条记录。是否有任何解决方案可以提高速度或通过一次查询获取数据?

标签: c#sqlazure-cosmosdb

解决方案


推荐阅读