2013-04-08 18 views

cevap

12

Her ikisi de birbirinin kadar verimli - bunlar işlevler birbiriyle aynı havaya sahiptir.

Ama bu ikisinden de daha verimlidir: işlev çağrılır gerekmez

(column_name is null 
or column_name = 'test') 

çünkü.

Daha sık karşılaşılan sınama işleminin ilk önce performansı artırdığını görebilirsiniz.

böyle sorularla

, en basit ve daha güvenilir bir yol göreli performansını keşfetmeye sadece onları denemek ve sorgu zamanlamalarını karşılaştırmaktır. Testin adil olması için, üretim ölçekli ve gerçekçi değerli veri kümeleri olduğundan emin olun.

11

NULLIF ve IFNULL'un amacı aynı değildir, bu nedenle performans karşılaştırması mantıklı değildir.

NULLIF

sentezleme belirli bir değere sahip ise IFNULL ifade null ise text döndürmek için kullanılır ise, null döndürmek için kullanılır.

Örnek: null yana

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

son kullanıcıya çok mantıklı değil. null yana

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

veritabanında özel bir anlamı vardır.

2

Farklı amaçlarla kullanılırlar, performans karşılaştırması herhangi bir anlam ifade etmez.

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

İlgili konular