0

我必须在 30 个表中的每个表中插入一条记录。来自其他系统的数据。我必须第一次在表中插入数据,然后如果发生任何更新,那么我需要更新 SQL Server 中的表。我有两个选择:

a)我可以检查单个表行的时间戳,如果时间戳更大,则更新。

b)每次我可以状态删除记录并插入数据。

SQL Server 数据库中哪一个会更快?有没有其他选择来解决这种情况?

4

2 回答 2

1

如果您不更改记录的索引字段,则尝试先更新然后插入的策略通常比删除/插入更快,因为您不会强制数据库更新一堆索引信息。

如果使用 Sql2008+,您应该使用合并命令,因为它明确地处理更新/插入条件干净和清晰

添加

我还应该补充一点,您知道很少更新(即 90% 插入)中的使用模式,您可能会遇到插入/插入比更新/插入更快的情况——这取决于很多细节。无论如何,如果使用 2008+,合并是明显的赢家

于 2013-10-03T20:27:19.793 回答
0

我通常喜欢放下并重新插入。我发现它更干净,更容易编码。但是,如果这种情况非常频繁地发生并且您担心并发问题,那么您可能最好使用选项 1。

此外,要考虑的另一件事是时间戳检查失败的频率(您不必插入或更新)。如果 99% 的数据是冗余/过时的数据,那么无论如何,您最好选择选项 1。

于 2013-10-03T19:50:41.553 回答