1
25
您不必说什么版本的SQL Server。如果可以使用SQL Server 2008 MERGE
注意:通常将merge用于upsert,这是我最初认为的问题所在,但它在没有
在执行成本方面,当要执行插入操作时,这两个看起来大致相等… Link to plan images for first run 但在第二次运行时,没有插入要做马修的答案看起来成本较低。我不确定是否有什么方法可以改善这一点。 Link to plan images for second run 测试脚本
|
2
12
|
3
1
简言之,您需要一个保证可以返回一行的表:
我在野外也看到过这种变化:
|
4
0
我必须投赞成票
缺点是[1]从代码中不明显地看出,在数据库[2]中强制唯一性客户端代码必须知道才能捕获异常。换句话说,跟在你后面的人可能会想,“这是怎么工作的?” 撇开这一点:我曾经担心抛出/捕获异常会影响性能,但我做了一些测试(在SQL Server 2005上),结果并不重要。 |
sqlrobert · SQL-如何查找不包含特定字段值的一组记录 1 年前 |
Nick Fleetwood · 调度语法的LINQ查询 2 年前 |
Mateen Bagheri · 选择表的计数并选择其自身 2 年前 |
Java · 使用交叉应用同时显示两列 2 年前 |