我主要使用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% 也是相当可观的。这是我想换的主要原因。
笔记
为了便于阅读,特意简化了这些示例。它们绝不反映我的实际情况。