为什么这个函数在第二轮中运行得快几个数量级
本文关键字:运行 数量级 几个 函数 为什么 二轮 | 更新日期: 2023-09-27 17:57:41
我在表中插入了一个新列HashHash
。然后,我需要编写一个小函数,将HashHash
的值设置为Sha1(Row.Hash)
:
public static void UpdateAllHashHashes()
{
using (var db = new MainContext())
{
var q = db.v2Hashes;
foreach (var rec in q)
{
rec.HashHash = GetSha1(rec.Hash);
db.SubmitChanges();
}
}
}
该表有数千条记录。我第一次跑步时花了好几分钟。它在接近尾声时抛出了一个错误,导致它没有完成,留下了大约20条未处理的记录,这是我半预期的,所以我再次运行该函数以获得最后一条运行良好的记录。
- 第一次,大约花了2分钟
- 第二次大约花了2秒
第二次传递如此之快的原因是因为db.SubmitChanges
实际上没有执行SQL,因为值没有改变吗?我仍然希望它运行UPDATE
SQL查询。
或者,这是某个地方的数据库引擎优化吗?
Submit更改只执行实际更改。将值12更新为新的值12并不是一个更改。
http://msdn.microsoft.com/en-us/library/bb292162(v=vs.110).aspx
是的,你的怀疑是对的。