我最近升级到MSSQL 2008 R2,并且想知道“新”Merge函数是否比截断和插入更有效/更快,因为每个表有数百万行,因此更新表。如果有人能提供一些他们表现的数据,那就太好了,但任何解释都会有所帮助!
答案 0 :(得分:1)
我不确定我是否正确地指出了TRUNCATE
和INSERT
。如果没有,那么随时纠正我。
MERGE
是指对现有行UPDATE
执行操作的机制,或者,如果找不到现有行,则为INSERT
。
你建议使用TRUNCATE
和INSERT
,这将删除MERGE的使用,因为一切都是INSERT。我不知道在这种情况下MERGE
是否会更快或更快,因为我从未尝试过,但我会假设MERGE
中决定是否使用的部分UPDATE
或INSERT
会产生一些开销。
答案 1 :(得分:1)
我使用MERGE
因为我需要跟踪数据更改(保持行的校验和),但是因为看起来你每次都需要“克隆”这些数据我没有看到任何特殊的理由在MERGE
进行某种检查之后,使用MERGE
(检查主键并在每个WHEN
上放置其他条件);
使用TRUNCATE
然后使用批量INSERT
,您不应该在游戏中使用所有条件