Te dwie funkcje MySQL zrobić to samo:W MySQL, który jest bardziej wydajny: IFNULL lub NULLIF?
IFNULL(column_name, 'test') = 'test'
lub
NULLIF(column_name, 'test') IS NULL
który z nich jest bardziej efektywny?
Te dwie funkcje MySQL zrobić to samo:W MySQL, który jest bardziej wydajny: IFNULL lub NULLIF?
IFNULL(column_name, 'test') = 'test'
lub
NULLIF(column_name, 'test') IS NULL
który z nich jest bardziej efektywny?
Obie są tak samo skuteczne, jak inne - funkcje mają taki sam narzut, jak każdy inny.
Ale to jest bardziej wydajny niż:
(column_name is null
or column_name = 'test')
Ponieważ funkcja nie musi być wywoływany.
Może się okazać, że wprowadzenie częściej spotykanego testu poprawi najpierw wydajność.
W przypadku takich pytań najprostszym i bardziej niezawodnym sposobem wykrycia względnej wydajności jest po prostu wypróbowanie ich i porównanie ustawień czasu zapytania. Upewnij się, że masz zestawy danych o rozmiarze i realistycznej wartości, więc test jest sprawiedliwy.
Cel NULLIF
i IFNULL
nie jest taki sam, więc porównanie wyników nie ma żadnego sensu.
NULLIF
służy do powrotu null
jeśli ekspresja ma określoną wartość, przy czym IFNULL
służy do powrotu text
Jeśli wyrażenie jest null
.
Przykład:
SELECT IFNULL(field,'empty') from table1;
Od null
nie ma sensu do użytkownika końcowego.
insert into table1 (field) values (nullif(field,'empty'));
Od null
ma szczególne znaczenie w bazie danych.
są używane do różnych celów, porównanie wydajności nie ma żadnego sensu.
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