检索到的记录数量的增加会以指数方式增加linq查询持续时间

时间:2013-04-30 23:10:44

标签: c# .net entity-framework wcf-data-services

在使用EF 5.0和WCF数据服务测试我的数据访问例程期间,我遇到了性能问题。我正在从WCF数据服务操作中执行以下简单查询:

var addresses = (from address in context.Addresses select address).Take(500);
var addressList = addresses.ToList();

当我只拍摄500条记录时,查询时间约为300毫秒。记录1000条记录,查询时间为4秒。以2000记录查询时间为24秒。记录约6000条记录,查询时间为360秒或更长。

当我在Sql Server Management Studio中执行EF生成的sql语句时,6000记录查询基本上是即时的。

可以配置哪些设置来消除此性能问题?

1 个答案:

答案 0 :(得分:1)

这是一个只读操作(例如,在网格中显示)还是需要更新从数据库中检索的实体?

如果您不需要更新实体,则应使用.AsNoTracking()方法 - 这意味着实体框架不会尝试跟踪实体的任何更改。尝试这样的事情:

var addressList = context.Addresses.AsNoTracking().Take(500).ToList();

推荐阅读:

Entity Framework and AsNoTracking