gpt4 book ai didi

sql - 在 SQL Server 2008 中维护 'set' 的最有效方法?

转载 作者:搜寻专家 更新时间:2023-10-30 22:04:06 24 4
gpt4 key购买 nike

我有大约 200 万行左右的数据,每行都有一个人工 PK 和两个 Id 字段(因此:PK、ID1、ID2)。我在 ID1+ID2 上有一个唯一约束(和索引)。

我收到两种更新,每次更新都有不同的 ID1。

  1. 100-1000行全新数据(ID1是新的)
  2. 100-1000 行大部分但不一定完全重叠的数据(ID1 已经存在,可能是新的 ID1+ID2 对)

维护这个“集合”的最有效方法是什么?以下是我看到的选项:

  1. 删除 ID1 的所有行,插入所有新行(哎呀)
  2. 查询新数据ID1+ID2集合中所有已有行,只插入新行
  3. 插入所有新行,忽略触发唯一约束违规的插入

有什么想法吗?

最佳答案

如果您使用的是 SQL Server 2008(或 2008 R2),您可以查看 MERGE ,类似于:

MERGE INTO MyTable mt 
USING NewRows nr
ON mt.ID1 = nr.ID1 and mt.ID2 = nr.ID2
WHEN NOT MATCHED THEN
INSERT (ID1,ID2,<more columns>) VALUES (nr.ID1,nr.ID2,<other columns>);

关于sql - 在 SQL Server 2008 中维护 'set' 的最有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4615735/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com