2010-03-22 96 views
9

我有一个应用程序正在写访问SQL服务器后端。使用率最高的部分之一是用户选择问题答案的位置,然后触发存储过程,查看是否已经给出了答案,是否执行了UPDATE,如果不是,则执行INSERT。MERGE与UPSERT

这工作得很好,但现在我们已经升级到SQL Server 2008 express我想知道如果重写SP使用新的MERGE命令会更好/更快/更高效。

有没有人有任何想法,如果这比做一个SELECT,然后是INSERT或UPDATE更快?

回答

2

不值得努力。可能是可行的,但它不会给你任何明显的东西。

MERGE特别针对数据仓库,在这些数据仓库中查找插入/更新内容是棘手的部分。它允许使用一组合并完成所有操作(插入,更新),而每个条件对应一个合并。这对你的情况并没有真正的区别。

我有一个数据库,我可以将3-5百万行上传到一个3亿行表中 - 这些合并使我的表现提高了50%(一次扫描而不是两次)。

+1

这是一个公平的点,虽然我不嘲笑这一点,但我认为如果它提供了更好的表现,如你所说,那么它可能会在“微型优化剧院”的一集中出现,如果我得到一些松弛的时间在项目中需要看起来很忙 – 2010-03-23 08:09:42

+10

“MERGE特别针对数据仓库” - 听起来对我来说是无稽之谈。 – onedaywhen 2012-03-28 14:12:02