有没有理由使用比其他这些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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top