Queste due funzioni di MySQL fanno la stessa cosa:In MySQL, che è più efficiente: IFNULL o NULLIF?
IFNULL(column_name, 'test') = 'test'
o
NULLIF(column_name, 'test') IS NULL
Quale è più efficiente?
Queste due funzioni di MySQL fanno la stessa cosa:In MySQL, che è più efficiente: IFNULL o NULLIF?
IFNULL(column_name, 'test') = 'test'
o
NULLIF(column_name, 'test') IS NULL
Quale è più efficiente?
Sono entrambi efficienti quanto l'un l'altro - le funzioni hanno all'incirca le stesse spese generali l'una dell'altra.
ma questo è più efficiente di uno:
(column_name is null
or column_name = 'test')
Poiché la funzione non ha bisogno di essere richiamato.
È possibile trovare mettendo il test più comunemente incontrato prima migliora le prestazioni.
Con domande come questa, il modo più semplice e più affidabile per scoprire la performance relativa è quello di provare solo loro e confrontare tempi di query. Assicurati di avere set di dati di dimensioni reali e con valori realistici, quindi il test è corretto.
Scopo di NULLIF
e IFNULL
non è lo stesso, quindi il confronto delle prestazioni non ha alcun senso.
NULLIF
è usato per restituire null
se l'espressione ha un valore specifico, che IFNULL
è usato per restituire text
se expression è null
.
Esempio:
SELECT IFNULL(field,'empty') from table1;
Poiché null
non ha molto senso per l'utente finale.
insert into table1 (field) values (nullif(field,'empty'));
Dal null
ha un significato speciale nel database.
sono utilizzati per scopi diversi, il confronto delle prestazioni non ha alcun senso.
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