2013-04-08 14 views

答えて

12

これらはどちらも互いに効率的です。機能はお互いにほぼ同じオーバーヘッドを持ちます。

しかし、これはどちらかよりも効率的である:関数が呼び出される必要はありませんので

(column_name is null 
or column_name = 'test') 

より一般的に遭遇するテストを行うと、パフォーマンスが向上することがあります。


このような疑問がある場合、相対的なパフォーマンスを検出する最も簡単で信頼性の高い方法は、それらを試してクエリのタイミングを比較することです。テストが公正なものになるように、実物大のデータセットを用意してください。

11

NULLIFIFNULLの目的は同じではないため、パフォーマンスの比較は意味をなさない。

NULLIFは、発現がnullある場合IFNULLtextを返すために使用されるのに対し、発現は、特定の値を有する場合nullを返すために使用されます。

例:null以来

SELECT IFNULL(field,'empty') from table1;

がユーザーを終了するにはあまり意味がありません。 null以来

insert into table1 (field) values (nullif(field,'empty'));

は、データベースに特別な意味を持っています。

2

異なる目的で使用されているため、パフォーマンスの比較は意味をなさない。

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

関連する問題

 関連する問題