0

我使用 Entity Framework 使用.skipand实现了分页.take。这很好用,但是当我在数据库中获取 100 万条记录的记录数时(UIClient 需要对网格页码进行计数),它需要花费大量时间,大约 600 毫秒,这是巨大的。

如果我不使用计数,只实现分页,那么它几乎不需要 20 到 25 毫秒。如何进行有效计数?我怎样才能从 600 毫秒降低到 50 毫秒左右?

我使用的示例查询:

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

我有索引NamedateTime并且CustomerId是主键。

提前致谢,

阿比奈

4

2 回答 2

1

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

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

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

于 2012-12-12T14:44:57.317 回答
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();
于 2012-12-12T14:59:01.390 回答