我有一个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秒)