[英]SQL Server - join or subquery in update statements?
有沒有理由在性能方面使用其中一個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
alt text 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 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.