首页 / 更多教程 / 字典/列表更新数据库的速度
字典/列表更新数据库的速度
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了字典/列表更新数据库的速度,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1511字,纯文字阅读大概需要3分钟。
内容图文
![字典/列表更新数据库的速度](/upload/InfoBanner/zyjiaocheng/884/659a1fd8ecfb4da58bb429cbaced67ea.jpg)
我有我的模型根据一些以Dictionary形式出现的信息来更新数据库.我目前的操作方式如下:
SortedItems = db.SortedItems.ToList();
foreach (SortedItem si in SortedItems)
{
string key = si.PK1 + si.PK2 + si.PK3 + si.PK4;
if (updates.ContainsKey(key) && updatas[key] != si.SortRank)
{
si.SortRank = updates[key];
db.SortedItems.ApplyCurrentValues(si);
}
}
db.SaveChanges();
遍历字典并为每个项目执行db查找会更快吗?词典仅包含已更改的项目,范围从2个到整个集合都可以.我对替代方法的想法是:
foreach(KeyValuePair<string, int?> kvp in updates)
{
SortedItem si = db.SortedItems.Single(s => (s.PK1 + s.PK2 + s.PK3 + s.PK4).Equals(kvp.Key));
si.SortRank = kvp.Value;
db.SortedItems.ApplyCurrentValues(si);
}
db.SaveChanges();
编辑:假设更新的数量通常是整个数据库的5-20%
解决方法:
我们看看吧:
方法1:
>您将遍历数据库中的所有1000个项目
>您仍然会访问词典中的每一项,并且有950次未登录词典
>您仍然有50个对数据库的更新调用.
方法2:
>您将迭代字典中的每个项目,而字典中不会遗漏任何内容
>您将有50个对数据库的单独查找调用.
>您将有50次对数据库的更新调用.
这实际上取决于数据集的大小以及平均修改的百分比.
您还可以执行以下操作:
方法3:
>从字典中构建所有键的集合
>一次查询数据库以查找与那些键匹配的所有项目
>遍历结果并更新每个项目
就我个人而言,我将尝试确定您的典型案例方案并分析每个解决方案,以找出最佳方案.我真的认为,如果您有大量的设置和大量的更新,第二种解决方案将导致大量数据库和网络命中,因为对于每次更新,它都必须两次访问数据库(一次才能获得该项目,一次即可更新项目).
是的,这是一个很长的说法,“取决于……”
如有疑问,我将对两者进行编码并根据生产场景的复制对它们进行计时.
内容总结
以上是互联网集市为您收集整理的字典/列表更新数据库的速度全部内容,希望文章能够帮你解决字典/列表更新数据库的速度所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。