什么查询应该更快
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 中?它取决于什么?
什么查询应该更快
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 中?它取决于什么?
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%。
好吧,让我首先声明您的查询有两种不同的含义。更新 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%。
希望有些帮助。祝你好运。