どのクエリを高速にする必要がありますか
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とISNULLのテスト比較は次のとおりです-http: //blogs.x2line.com/al/archive/2004/03/01/189.aspx
また、パフォーマンスの比較については、このブログをチェックしてください:ISNULL vs. COALESCE http://sqlblog.com/blogs/adam_machanic/archive/2006/07/12/performance-isnull-vs-coalesce.aspx:
ISNULLは、かなり一貫してCOALESCEを平均10または12パーセント上回っているように見えます。
まず、クエリには 2 つの異なる意味があることを述べさせてください。table1 を更新して field1 を常に何かに等しく設定することは、それが NULL であっても、field1 が NULL の場合にのみテーブルを更新することと同じではありません。更新の意図は何ですか?
このフィドルを例にとります:
SELECT Field FROM Test WHERE Field IS NULL;
SELECT COALESCE(Field,'') FROM Test;
最初のクエリは 1 つのレコードを返し、2 番目のクエリは 2 つのレコードを返します。
次のパフォーマンスについて疑問に思うかもしれません。
SELECT COALESCE(Field,'') FROM Test;
SELECT ISNULL(Field,'') FROM Test;
私はテストしていませんが、ISNULL は 20 ~ 30% 効率的であると想定されています。
これが役立つことを願っています。幸運を。