首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >插入或更新方案中的Sql server批量插入/更新与合并

插入或更新方案中的Sql server批量插入/更新与合并
EN

Stack Overflow用户
提问于 2010-09-24 20:57:07
回答 2查看 16.5K关注 0票数 8

我需要找到最好的方式来插入或更新数据库中的数据使用sql server和asp.net。这是一个标准场景,如果数据存在,则会更新;如果不存在,则会插入数据。我知道这里有很多关于这方面的话题,但没有人回答我需要知道的问题。

所以我的问题是,当你更新/插入5k - 10k行时,确实没有问题,但是对于50k或更多的行,问题是什么。

我的第一个想法是使用sql server2008merge命令,但是如果它是50k+行,我有一些性能方面的考虑。此外,我不知道是否可以不基于主id键(int),而是基于表中的其他唯一键,以这种方式对数据进行marge。(准确地说,是不会随时间变化的产品序列号)。

我的第二个想法是首先获取所有产品序列,然后将新的数据序列与之进行比较,并将其分为要插入的数据和要更新的数据,然后只进行一次批量插入和一次批量更新。

我只是不知道哪一个会更好,我不知道合并的性能会是什么,它只有sql server 2008支持,但它看起来很简单,第二个选项不需要sql 2008,批处理应该是快的,但首先选择所有序列并根据它们进行划分可能会有一些性能损失。

你的观点是什么,选择什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-24 21:06:02

Merge的性能要好得多,因为“MERGE语句最重要的优点之一就是所有的数据只被读取和处理一次”

您不需要主键,您可以在一个或多个字段上进行连接,从而使您的记录具有唯一性

票数 5
EN

Stack Overflow用户

发布于 2010-09-24 21:05:30

在序列号上执行您所描述的合并应该没有问题。在使用MERGE时,您可能希望阅读Optimizing MERGE Statement Performance以了解微软推荐的最佳实践。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3787252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档