gpt4 book ai didi

mysql - INSERT...ON DUPLICATE KEY UPDATE 比 DELETE/INSERT 所有记录更快

转载 作者:行者123 更新时间:2023-11-29 03:38:07 28 4
gpt4 key购买 nike

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

我想知道哪个更快,删除一个表中的每条记录并使用 INSERT INTO ... SELECT FROM 查询或使用 INSERT...ON 将其再次插入DUPLICATE KEY UPDATE 以便创建任何新记录并更新任何主键违规

最佳答案

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

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

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

关于mysql - INSERT...ON DUPLICATE KEY UPDATE 比 DELETE/INSERT 所有记录更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18247421/

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