9

我最近升级到 MSSQL 2008 R2 并且想知道“新”合并功能是否比截断和插入更新表更有效/更快,因为每个表都有数百万行。如果有人能提供一些他们的表现数据,那就太好了,但任何解释都会有所帮助!

4

2 回答 2

1

不确定我是否正确理解了您TRUNCATE的观点。INSERT如果没有,请随时纠正我。

MERGE是一种机制,可以UPDATE对现有行执行操作,或者在未找到现有行的情况下执行INSERT.

您建议TRUNCATEand INSERT,这将删除 MERGE 的使用,因为一切都是 INSERT。我不知道MERGE在这种情况下 a 是否会更快,因为我从未尝试过,但我会假设MERGE决定是否使用 aUPDATEINSERT确实会产生一些开销的部分。

于 2012-11-15T07:03:53.690 回答
1

我之所以使用MERGE是因为我需要跟踪数据更改(保持行的校验和),但是因为似乎每次我看不到任何特定的使用理由时您只需要“克隆”该数据MERGE,毕竟MERGE做了某种检查(对主键进行检查,并在 each 上添加附加条件WHEN);通过使用TRUNCATE然后大量使用,INSERT您不应该拥有所有这些条件

顺便说一句,不要把这当作 100% 正确,我没有任何性能测试可以作为证明;我建议你尝试这两种操作,看看哪一种需要更多时间 =)

于 2012-11-15T08:06:31.490 回答