加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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可能很方便.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读