【发布时间】:2010-12-08 12:22:09
【问题描述】:
我主要使用 Exists Method 将行合并到表中,但我正在考虑切换到 Row Count Method。有什么理由不这样做吗?
存在方法
If Exists(Select * From Table Where ID = @ID) Begin
Update Table Set Value = @Value Where ID = @ID
End Else Begin
Insert Into Table (Value) Values (@Value);
End
行计数法
Update Table Set Value = @Value Where ID = @ID
If (@@RowCount = 0) Begin
Insert Into Table (Value) Values (@Value);
End
性能
行计数方法似乎要快得多。在一个大约有 50k 行的表上,它以 Exists Method 时间的 1/5 计时。这些测试不是太科学,但即使保守的 +/- 15% 也是相当可观的。这是我想切换的主要原因。
注意
为了便于阅读,特意简化了示例。它们绝不反映我的实际情况。
【问题讨论】:
标签: sql sql-server sql-server-2005 merge upsert