SQL服务器 - 加入或UPDATE语句子查询?
-
19-09-2019 - |
题
有没有理由使用比其他这些UPDATE语句中的一个与性能有关的?
UPDATE myTable
SET fieldx = 1
FROM myTable AS mt
, myView AS mv
WHERE mt.id = mv.id
UPDATE myTable
SET fieldx = 1
WHERE id IN ( SELECT id
FROM myView )
解决方案
他们可能会拿出相同的执行计划,这意味着没有任何区别。为了确认,只需试用每一个SSMS与“包括执行计划”选项打开。
在实际上,一个我会去是:
UPDATE mt
SET mt.fieldx = 1
FROM myTable mt
JOIN myView mv ON mt.ID = mv.ID
我更喜欢此语法。虽然,它也将推出相同的执行计划。
为了证明这一点,我跑与UPDATE语句的每个变体的测试。作为执行计划下图显示,他们都出来了一样 - 都执行相同的: 点击 替代文字http://img707.imageshack.us/img707/7801/60422461.png
,点击 替代文字http://img683.imageshack.us/img683/7874/41210682.png
,点击 替代文字http://img708.imageshack.us/img708/5020/20506532.png
其他提示
虽然这并不性能讲,我喜欢的第一个例子更好,这样我可以兽医它不改变代码的底层结构更容易。请注意这里我把在评论什么:
UPDATE myTable
SET fieldx = 1
--SELECT *
FROM myTable AS mt
, myView AS mv
WHERE mt.id = mv.id
不隶属于 StackOverflow