【发布时间】:2016-11-07 05:29:54
【问题描述】:
我认为查询 1 比查询 2 更具可读性,但我想知道它们在性能方面是否有任何区别?
查询 1
UPDATE table_1
SET col_1 =
CASE WHEN table_1.col_pk IS NULL THEN value1
ELSE value2
END
FROM table_1
LEFT JOIN table_2 ON table_1.col_pk = table_2.col_pk
或
查询 2
UPDATE table_1
SET col_1 = value1
FROM table_1
LEFT JOIN table_2 ON table_1.col_pk = table_2.col_pk
WHERE table_1.col_pk IS NULL
UPDATE table_1
SET col_1 = value2
FROM table_1
INNER JOIN table_2 ON table_1.col_pk = table_2.col_pk
【问题讨论】:
-
基准测试............
-
CASE WHEN col_pk IS NULL两个col_pk中的哪一个? -
哎呀对不起.. table_1.col_pk 代替。谢谢。我会更新线程。
-
在第一个查询中,如果
table_1.col_pk IS NULL是一个 PK 并且您将它作为LEFT JOIN的左侧部分,我认为它永远不会是真的。你可能是想在那里写table_2.col_pk IS NULL? -
你是对的。对不起..再次编辑..嘿嘿嘿。但我知道你已经明白我的意思了。
标签: sql sql-server query-performance