我必须在 30 个表中的每个表中插入一条记录。来自其他系统的数据。我必须第一次在表中插入数据,然后如果发生任何更新,那么我需要更新 SQL Server 中的表。我有两个选择:
a)我可以检查单个表行的时间戳,如果时间戳更大,则更新。
b)每次我可以状态删除记录并插入数据。
SQL Server 数据库中哪一个会更快?有没有其他选择来解决这种情况?
我必须在 30 个表中的每个表中插入一条记录。来自其他系统的数据。我必须第一次在表中插入数据,然后如果发生任何更新,那么我需要更新 SQL Server 中的表。我有两个选择:
a)我可以检查单个表行的时间戳,如果时间戳更大,则更新。
b)每次我可以状态删除记录并插入数据。
SQL Server 数据库中哪一个会更快?有没有其他选择来解决这种情况?
如果您不更改记录的索引字段,则尝试先更新然后插入的策略通常比删除/插入更快,因为您不会强制数据库更新一堆索引信息。
如果使用 Sql2008+,您应该使用合并命令,因为它明确地处理更新/插入条件干净和清晰
添加
我还应该补充一点,您知道很少更新(即 90% 插入)中的使用模式,您可能会遇到插入/插入比更新/插入更快的情况——这取决于很多细节。无论如何,如果使用 2008+,合并是明显的赢家
我通常喜欢放下并重新插入。我发现它更干净,更容易编码。但是,如果这种情况非常频繁地发生并且您担心并发问题,那么您可能最好使用选项 1。
此外,要考虑的另一件事是时间戳检查失败的频率(您不必插入或更新)。如果 99% 的数据是冗余/过时的数据,那么无论如何,您最好选择选项 1。