これら 2 つの MySQL 関数は同じことを行います。
IFNULL(column_name, 'test') = 'test'
また
NULLIF(column_name, 'test') IS NULL
どちらがより効率的ですか?
どちらも互いに同じくらい効率的です。関数のオーバーヘッドは互いにほぼ同じです。
しかし、これは次のいずれよりも効率的です。
(column_name is null
or column_name = 'test')
関数を呼び出す必要がないためです。
より一般的に遭遇するテストを最初に配置すると、パフォーマンスが向上する場合があります。
このような質問では、相対的なパフォーマンスを発見するための最も簡単で信頼性の高い方法は、それらを試してクエリのタイミングを比較することです。テストが公平になるように、本番サイズで現実的な値のデータセットがあることを確認してください。
との目的は同じNULLIF
でIFNULL
はないため、パフォーマンスの比較は意味がありません。
NULLIF
はnull
、式が特定の値を持つ場合に返すために使用されますが、 は式が である場合IFNULL
に返すために使用されます。text
null
例:
SELECT IFNULL(field,'empty') from table1;
null
エンドユーザーにとってはあまり意味がありません。
insert into table1 (field) values (nullif(field,'empty'));
以来null
、データベースで特別な意味を持っています。
それらは異なる目的で使用され、パフォーマンスの比較は意味がありません。
select if(a,b,c); # a ? b : c # if a!=0 and a is not null then b else c
select ifnull(a,b); # a ? a : b # if a is not null then a else b
select nullif(a,b); # a=b ? null : a # if a=b then null else a
http://dev.mysql.com/doc/refman/5.7/en/control-flow-functions.html