2011-01-20 13 views
11

si se sabe que sólo hay dos valores a candidato para el resultado de una columna,mysql, ifnull vs coalesce, ¿cuál es más rápido?

ifnull(a, b) as a_or_b_1 

y

coalesce(a, b) as a_or_b_2 

dará el mismo resultado. pero, ¿cuál es más rápido? al buscar encontré this article, que dice ifnull es más rápido. pero fue el único artículo que encontré. cualquier opinión sobre esto?

gracias de antemano :)

+2

Uhm, ¿estás seguro de que es la parte ** más lenta ** de tus consultas? :-) – zerkms

+0

persiguiendo ciclos :( – davogotland

Respuesta

12

Mi opinión es que debes de referencia para su uso.

Dudo que haya mucha diferencia. Tenga en cuenta que aunque un solo punto de referencia podría sugerir que uno es ligeramente mejor, la variación en los datos a lo largo del tiempo podría cambiar ese resultado.

También tenga en cuenta que se unen ha sido parte de SQL estándar desde 1992 - No estoy seguro de IFNULL es en cualquier norma todavía.

Hay un buen artículo de Adam Machanic sobre la evaluación comparativa de un escenario equivalente - Performance: ISNULL vs. COALESCE (in SQL Server). Tenga en cuenta algunas de las condiciones para obtener una prueba válida.

Cuestiones relacionadas