c# – LINQ更新大量记录的最快方式(> 2m)
发布时间:2020-12-16 00:23:16 所属栏目:百科 来源:网络整理
导读:我有这个循环: using(var db = new MainContext()){ var q = db.tblInternalURLs; foreach (var rec in q) { db.ExecuteCommand("UPDATE tblInternalURLS SET hash = '" + LoginAPI.GetSha1(rec.URL) + "' WHERE ID = " + rec.ID); }} 将更新查询转换为db.E
我有这个循环:
using(var db = new MainContext()) { var q = db.tblInternalURLs; foreach (var rec in q) { db.ExecuteCommand("UPDATE tblInternalURLS SET hash = '" + LoginAPI.GetSha1(rec.URL) + "' WHERE ID = " + rec.ID); } } 将更新查询转换为db.ExecuteCommand已大大提高了速度,但我想知道是否有更快的方法来执行这些查询,因为它仍然需要很长时间超过2,000,000条记录.我相信很多开销都在最初的LINQ查询中.它是否正确? 解决方法
好吧,看到SQL Server支持散列,您可以通过编写SQL查询来一次性完成整个表,从而避免将任何数据带到客户端:
update tblInternalURLS SET hash = HASHBYTES('SHA1',CONVERT(nvarchar(4000),URL)) 如果散列存储为字符串,则sys.fn_varbintohexsubstring可能很方便. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |