2011-08-18 47 views
2

哪個會更快?哪些SQL UPDATE語句會更快?

方法A:

UPDATE table1 
SET table1.column1 = table2.column1 
FROM table2 
WHERE table1.column2 = table2.column2 

方法B:

UPDATE table1 
SET table1.column1 = table2.column1 
FROM table1 
JOIN table2 on table1.column2 = table2.column2 

他們會產生相同的執行計劃?

有沒有我應該避免其中之一的情況?

我做的一些測試幾乎在同一時間執行,但總是很高興聽到第二個opnion。

回答

8

它們是等效的。您可以通過自己檢查執行計劃來驗證。第二個選項:

UPDATE table1 
SET table1.column1 = table2.column1 
FROM table1 JOIN 
    table2 on table1.column2 = table2.column2 

當前是編寫查詢的首選方法,因爲它更清楚爲什麼要指定標準。

+0

「目前是首選方法」 - 誰首選?不是我;) – onedaywhen

+0

是的。像我這樣的老年人仍然喜歡舊的方式,但現在我想我們必須能夠讀寫兩者。 –

+0

有趣的是,我想,但是逗號分隔的表格列表會生成笛卡兒積,直到您煩惱在「WHERE」子句中「加入」它們爲止。加入標準和過濾標準的分離*可以說更容易閱讀。 'JOIN'語法也強制你指定條件,所以你不能忘記,並以意想不到的結果結束。儘管如此,兩者都是有效的,而且我確實看到年輕的開發人員有時會將「舊」方法放入新代碼中。 – Yuck