实现nvarchar数据的实体框架需要很长时间

时间:2016-09-20 15:09:34

标签: entity-framework

我有一个linq查询用于从数据库加载地址数据。 (这是更大的linq声明的一部分)。 其中一个选择字段有,

    select new GridDetail
      {
        .......
        LocationAddress = p.Location.Address.Address1 + " " +        p.Location.Address.Address2 + ", " + p.Location.Address.City + ", " + p.Location.Address.StateProvince.Name,
        .............
      };

生成的查询在大约100毫秒内运行(根据SQLProfiler)。但query.ToList()语句需要4秒才能执行。

我尝试在select语句中逐个删除字段,并意识到当我注释掉上述语句时,Query会在不到1秒的时间内执行。

生成的SQL 以N + 1方式加载数据。一次性检索所有数据。 LocationAddress个参数中的每个字段都映射到 nvarchar(250) 此外,根据.Net和SQLProfiler查询时间的StopWatch时间,LINQ中没有延迟查询生成

1条记录的.ToList()(选择参数中为LocationAddress)的执行时间为3秒,3000条记录的执行时间为4秒。这让我觉得它独立于否。行,所以消除了分页作为解决方案。

那里的专家,你能帮我更快地加载这些数据吗?

提前致谢:)

修改:

根据@ raderick的评论,将连接部分从Query移到C#,速度从3秒跳到1.5秒。

现在" LocationAddress"较少的查询运行800毫秒与 - LocationAddress运行1.5秒...(请注意,这是为3000记录..对于1记录,查询运行在1.2秒)

0 个答案:

没有答案