2011-08-18 112 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