小编Ecl*_*pse的帖子

在 SQL Server 中删除然后插入还是更新然后插入更好?

我正在使用 SQL Server 2005。我有一个表,它基本上是一个带有时间戳的 id 列表,用于记录该 id 上次发生事件的时间。

我有一个表变量中的 id 列表,我想用当前时间更新表中所有已经在表中的 id,并为尚未在表中的 id 插入新记录。SQL 2005 没有 MERGE 语句或 ON DUPLICATE KEY UPDATE。

以下哪种形式是首选:

UPDATE IdTimes SET LastEventTime = GetDate() WHERE Id in (SELECT NewId FROM @NewIds)

INSERT INTO IdTimes(Id, LastEventTime)
   SELECT NewId, GetDate() FROM @NewIds
   WHERE NOT EXISTS (SELECT Id FROM IdTimes WHERE NewId = Id)
Run Code Online (Sandbox Code Playgroud)

或者:

DELETE FROM IdTimes WHERE Id IN (SELECT NewId FROM @NewIds)
INSERT INTO IdTimes(Id, LastEventTime) SELECT NewId, GetDate() FROM @NewIds
Run Code Online (Sandbox Code Playgroud)

或者是否有更好的解决方案来实现这一目标?

sql-server-2005 best-practices

5
推荐指数
1
解决办法
6417
查看次数

标签 统计

best-practices ×1

sql-server-2005 ×1