我最近升级到了MSSQL2008Merge,我想知道在每个表都有数百万行的情况下,“新的”合并函数是否比截断和插入更新表更有效/更快。如果有人能提供一些性能数据,那就太好了,但任何解释都会有帮助!
发布于 2012-11-15 15:03:54
我不确定我是否正确理解了您对TRUNCATE和INSERT的观点。如果没有,请随时纠正我。
MERGE是一种机制,用于对现有行执行UPDATE,或者在未找到现有行的情况下执行INSERT。
您建议使用TRUNCATE和INSERT,这将删除MERGE的使用,因为所有内容都是插入的。我不知道在这种情况下MERGE是否会更快,因为我从未尝试过,但我假设MERGE中决定使用UPDATE还是INSERT的那部分确实会带来一些开销。
发布于 2012-11-15 16:06:31
我使用MERGE是因为我需要跟踪数据更改(保存行的校验和),但是由于每次我看不出使用MERGE有什么特别的理由,您似乎只需要“克隆”数据,毕竟MERGE会进行某种检查(对主键进行检查,并在每个WHEN上添加附加条件);通过使用TRUNCATE和批量INSERT,您不应该使用所有这些条件
顺便说一句,不要认为这是100%正确的,我没有任何性能测试可以作为证据;我建议您尝试这两个操作,看看哪一个需要更多时间=)
https://stackoverflow.com/questions/13392743
复制相似问题