【发布时间】:2016-05-18 09:55:30
【问题描述】:
因为我的代码需要很长时间才能处理。我分析了代码并搜索了需要大量时间的代码部分。
在我的listTempInOut 中有超过 100000 条记录。 SDetails 也有更多记录。我想update模型中的2个字段。所以下面是代码:-
var dataUpd = (from A in tempSS
from B in SDetails
from C in listTempInOut
where A.Id == B.Id
&& A.Shift == B.Shift && A.Employee == C.Employee && A.SDate == C.Time_Date1
select new { A.SId, B.Status, C }).ToList();
foreach (var row in dataUpd)
{
row.C.Time_Field1 = row.ShiftId;
row.C.Time_Field2 = row.Status.ToString();
}
把上面代码中的change can i do改成improve the performance,这样代码的执行时间就更少了。
【问题讨论】:
-
“1 lac 记录”??
-
@Slugart: 1 lac 是一个测量/计数单位 -> wiki,虽然肯定不是 SI,甚至不是英制 :)
-
如果您的表结构允许,您可能会通过使用连接获得更好的性能
-
这两行中哪一行花时间? ToList() 还是循环?一般来说,对数据库的任何迭代更新都将花费大量时间,并且它是您循环优化存储过程的地方之一
-
@PhillipH
ToList()正在抓紧时间。
标签: c# sql sql-server performance linq