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