在Web API中检索大量数据

时间:2016-03-10 07:09:50

标签: asp.net asp.net-web-api

我有一个web api,允许用户实时和批量检索数据。然而问题是,我有一个拥有超过3000万条记录的数据,这会导致批量请求出现瓶颈。我在我的get方法中使用分页,每个api请求返回默认的10条记录,但由于数据的大量拉动,10条记录仍需要时间检索。

以下是我的get方法的示例:

 public async Task<IHttpActionResult> Get(int pageno = 1, int pagesize = 10)
    {
        int skip = (pageno - 1) * pagesize;
        int total = db.webapi_customer_charges.Count();
        var cc = await db.webapi_customer_charges
            .OrderBy(c => c.hospital_number)
            .Skip(skip)
            .Take(pagesize)
            .ToListAsync();

        return Ok(new Paging<webapi_customer_charges>(cc, pageno, pagesize, total));
    }

在检索大量数据时,有没有办法或解决方法或最佳做法?谢谢。

1 个答案:

答案 0 :(得分:1)

不确定如何使用EF来实现它,因为我假设它在你可以跳过或占用之前检索整个集合,但我认为如果你在Sql Server端调用存储过程并且只是传入最小和最大行数。这样,您只需在每次调用时从服务器获得所需的数据量。

以下是call a stored proc with EF的链接。如果您没有找到更好的解决方案,请尝试选择并使用Sql中的ROW_NUMBER()根据您的输入参数进行过滤非常简单。