我基本上在这里提出了同样的问题 -忽略重复插入的最佳方法?- 除了在我的情况下它是 SQL Server。
我有一张表格,其中列出了已故人员 ID。源数据库中有很多地方可以指示一个人已故。我想从这些位置中的每一个插入到这个主表中,但是一个人可能在多个地方被指示为已故。
理想情况下(我认为)我只想以最有效的方式忽略重复的关键错误。(因此,我不想在我的 INSERT 语句中检查主表的 ID。)
(与解决我的问题有关需要提高视图性能的建议)
我基本上在这里提出了同样的问题 -忽略重复插入的最佳方法?- 除了在我的情况下它是 SQL Server。
我有一张表格,其中列出了已故人员 ID。源数据库中有很多地方可以指示一个人已故。我想从这些位置中的每一个插入到这个主表中,但是一个人可能在多个地方被指示为已故。
理想情况下(我认为)我只想以最有效的方式忽略重复的关键错误。(因此,我不想在我的 INSERT 语句中检查主表的 ID。)
(与解决我的问题有关需要提高视图性能的建议)
解决方案在于表创建本身。如果我
IGNORE_DUP_KEY = ON
在我的个人 ID 列上设置索引,则简单地忽略重复值并适当插入其余值。您还可以在插入语句中使用 EXCEPT 子句。它很可能比 IGNORE_DUP_KEYS 选项更快。有关详细信息和基准,请参见此处:
http://www.sqlservercentral.com/Forums/Topic856838-392-1.aspx
第三种选择是使用 MERGE 命令。
第四种选择是使用 where not in 技巧
我使用合并语句以下列格式执行此操作:
重新阅读您的问题,这可能不会有您正在寻找的效率,但可能对其他读者有用的信息。