2011-01-20 16 views
11

se è noto che vi sono solo due valori al candidato il risultato di una colonna,mysql, ifnull vs coalesce, che è più veloce?

ifnull(a, b) as a_or_b_1 

e

coalesce(a, b) as a_or_b_2 

darà lo stesso risultato. ma quale è più veloce? durante la ricerca ho trovato this article, che dice ifnull è più veloce. ma era l'unico articolo che ho trovato. qualche punto di vista su questo?

grazie in anticipo :)

+2

Uhm, sei sicuro che sia la ** parte più lenta ** delle tue domande? :-) – zerkms

+0

cicli di ricerca :( – davogotland

risposta

12

Il mio punto di vista è che dovresti fare un benchmark per il tuo utilizzo.

Dubito che ci sarà molta differenza. Ricorda che mentre un singolo benchmark potrebbe suggerire che uno è leggermente migliore, la variazione dei dati nel tempo potrebbe cambiare quel risultato.

Si noti inoltre che COALESCE fa parte dello standard SQL dal 1992 - non sono sicuro che IFNULL sia ancora in qualsiasi standard.

C'è un bell'articolo di Adam Machanic sul benchmarking di uno scenario equivalente - Performance: ISNULL vs. COALESCE (in SQL Server). Nota alcune delle condizioni per ottenere un test valido.