我需要找到最好的方式来插入或更新数据库中的数据使用sql server和asp.net。这是一个标准场景,如果数据存在,则会更新;如果不存在,则会插入数据。我知道这里有很多关于这方面的话题,但没有人回答我需要知道的问题。
所以我的问题是,当你更新/插入5k - 10k行时,确实没有问题,但是对于50k或更多的行,问题是什么。
我的第一个想法是使用sql server2008merge命令,但是如果它是50k+行,我有一些性能方面的考虑。此外,我不知道是否可以不基于主id键(int),而是基于表中的其他唯一键,以这种方式对数据进行marge。(准确地说,是不会随时间变化的产品序列号)。
我的第二个想法是首先获取所有产品序列,然后将新的数据序列与之进行比较,并将其分为要插入的数据和要更新的数据,然后只进行一次批量插入和一次批量更新。
我只是不知道哪一个会更好,我不知道合并的性能会是什么,它只有sql server 2008支持,但它看起来很简单,第二个选项不需要sql 2008,批处理应该是快的,但首先选择所有序列并根据它们进行划分可能会有一些性能损失。
你的观点是什么,选择什么?
发布于 2010-09-24 13:06:02
Merge的性能要好得多,因为“MERGE语句最重要的优点之一就是所有的数据只被读取和处理一次”
您不需要主键,您可以在一个或多个字段上进行连接,从而使您的记录具有唯一性
发布于 2010-09-24 13:05:30
在序列号上执行您所描述的合并应该没有问题。在使用MERGE时,您可能希望阅读Optimizing MERGE Statement Performance以了解微软推荐的最佳实践。
https://stackoverflow.com/questions/3787252
复制相似问题