使用Entity Framework进行分页时的性能问题

时间:2012-12-12 14:13:22

标签: .net entity-framework

我使用.skip.take使用Entity Framework实现了分页。这工作正常,但是当我获取数据库中的记录数量为10万条记录(UIClient需要计算网格页码数)时,需要花费大量时间,大约600毫秒。

如果我不使用计数,则仅执行分页,那么它几乎不需要20到25毫秒。如何有效计数?如何从600毫秒降低到大约50毫秒?

我使用的示例查询:

int count = (from c in dbcontext.Customer
             where c.customerName ='xyz' && c.date >= 'dateTime'
             select c.CustomerId).Count();

我的Name索引,dateTimeCustomerId是主键。

提前致谢,

阿希奈

2 个答案:

答案 0 :(得分:1)

您是否可以使用SQL Server Profiler来获取从实体框架生成的查询,并通过SQL Server Management Studio中的查询分析器运行它?

从那里,您可以看到执行计划并查看瓶颈发生的位置,并调整代码以更好地执行。

我认为这些信息会使问题变得更加明显。

答案 1 :(得分:0)

尝试在分页前对已使用的记录使用计数,看看是否更好:

var records = (from c in dbcontext.Customer where c.customerName ='xyz' && c.date >= 'dateTime' select c.CustomerId);

var total = records.Count;
var pagedRecors = records.Skip((currentPage - 1) * recordsPerPage).Take(recordsPerPage).ToList();