1

什么查询应该更快

UPDATE table1
SET field1 = COALESCE(field1, someValue)
WHERE foreignKeyField = someKeyValue

或者

UPDATE table1
SET field1 = someValue
WHERE foreignKeyField = someKeyValue AND field1 is null

在 MS SQL Server 中?它取决于什么?

4

2 回答 2

3

ISNULL我猜,开销会更少,取决于 NULL 条件。这是 COALESCE 与 ISNULL 与 IS NULL OR 的测试比较 - http://blogs.x2line.com/al/archive/2004/03/01/189.aspx

另外,请查看此博客的性能比较:ISNULL 与 COALESCE http://sqlblog.com/blogs/adam_machanic/archive/2006/07/12/performance-isnull-vs-coalesce.aspx,其中说:

ISNULL 似乎始终比 COALESCE 平均高出 10% 或 12%。

于 2013-01-23T06:40:18.253 回答
0

好吧,让我首先声明您的查询有两种不同的含义。更新 table1 并将 field1 设置为始终等于某个值,即使它为 NULL,也不等同于仅在 field1 为 NULL 的情况下更新表。你更新的意图是什么?

以这个小提琴为例:

SELECT Field FROM Test WHERE Field IS NULL;
SELECT COALESCE(Field,'') FROM Test;

第一个查询返回一条记录,第二个查询返回 2 条记录。

您可能想知道以下性能:

SELECT COALESCE(Field,'') FROM Test;
SELECT ISNULL(Field,'') FROM Test;

虽然我没有测试过,但 ISNULL 的效率应该提高 20-30%。

希望有些帮助。祝你好运。

于 2013-01-23T05:52:15.173 回答