什么查询应该更快
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中?它取决于什么?
答案 0 :(得分:1)
ISNULL
将减少开销,取决于NULL条件,我想。以下是COALESCE与ISNULL对比IS NULL的测试比较或 - http://blogs.x2line.com/al/archive/2004/03/01/189.aspx
另外,请查看此博客中的Performance comparion:ISNULL vs. COALESCE http://sqlblog.com/blogs/adam_machanic/archive/2006/07/12/performance-isnull-vs-coalesce.aspx说:
ISNULL看起来非常一致地超越了COALESCE 平均为10%或12%。
答案 1 :(得分:0)
好吧,首先让我说明你的查询有两种不同的含义。更新table1并将field1设置为等于某些东西,即使它是NULL,也不等于仅在field1为NULL时更新表。您对更新的意图是什么?
以Fiddle为例:
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%。
希望其中一些有帮助。祝你好运。