首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >INSERT...ON重复键更新是否比删除/插入所有记录更快

INSERT...ON重复键更新是否比删除/插入所有记录更快
EN

Stack Overflow用户
提问于 2013-08-15 14:28:21
回答 1查看 326关注 0票数 2

我正在尝试同步两组表,每组表在结构上(大致)相同,一组在Microsoft SQL Server数据库上,另一组在MySQL数据库上,MSSQL有一个链接到MySQL数据库的服务器,称为LNK-SVR

我想知道哪个更快,是使用INSERT INTO ... SELECT FROM查询删除一个表中的每条记录并重新插入,还是使用INSERT...ON DUPLICATE KEY UPDATE创建任何新记录并更新任何主键冲突

EN

回答 1

Stack Overflow用户

发布于 2013-08-19 23:52:48

在Sql Server 2008或更早版本中,您应该使用Merge语句来同步两个表:

看看下面的示例:运行后,两个表(@sourceTableand和@targetTable)都有相同的行。

代码语言:javascript
复制
DECLARE @sourceTable TABLE(id INT PRIMARY KEY, somefield VARCHAR(255))

DECLARE @targetTable TABLE(id INT PRIMARY KEY, somefield VARCHAR(255))

INSERT INTO @sourceTable (id, somefield) VALUES(1, 'SourceValue1'),
 (3, 'SourceValue3')

INSERT INTO @targetTable (id, somefield) VALUES(1,
 'TargetValue1'), (2, 'TargetValue2')

SELECT * FROM @sourceTable SELECT * FROM @targetTable

MERGE @targetTable AS target USING @sourceTable AS source
ON target.id = source.id
WHEN MATCHED THEN UPDATE SET somefield = source.somefield
WHEN NOT MATCHED THEN   INSERT (id, somefield) VALUES(id, source.somefield)
WHEN NOT MATCHED BY source THEN DELETE;

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

https://stackoverflow.com/questions/18247421

复制
相关文章

相似问题

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