2010-02-08 88 views

回答

5

他們可能會拿出相同的執行計劃,這意味着沒有任何區別。要確認,只需在SSMS中嘗試啓用「包含執行計劃」選項。

事實上,一個我會去的是:

UPDATE mt 
SET mt.fieldx = 1 
FROM myTable mt 
    JOIN myView mv ON mt.ID = mv.ID 

,我更喜歡這種語法。不過,它也會出現相同的執行計劃。

爲了演示這個,我對UPDATE語句的每個變體都進行了測試。正如下面顯示的執行計劃,他們都出來了一樣 - 都執行相同的:
alt text http://img707.imageshack.us/img707/7801/60422461.png


alt text http://img683.imageshack.us/img683/7874/41210682.png


alt text http://img708.imageshack.us/img708/5020/20506532.png

+0

我更喜歡這種語法。它更加明確。 – 2010-02-08 19:53:52

0

雖然這並不業績說話,我更喜歡第一個例子,這樣我就可以更輕鬆地對它進行審查,而無需更改代碼的基礎結構。注意我在評論中的位置和內容:

UPDATE myTable 
SET fieldx = 1 
--SELECT * 
FROM myTable AS mt 
     , myView AS mv 
WHERE mt.id = mv.id