MarcosBL

Aprendiz de todo, maestro de nada

COUNT(*) contra COUNT(col)

¿ Pero eso no es lo mismo ? ¿ Existe alguna diferencia ?

Si, existe, y es bastante importante, tanto en resultados como en velocidad.

COUNT(*) cuenta registros. Si la tabla es MyISAM, y no fijamos un WHERE, los resultados se calcularñan de forma extremadamente rápida, ya que MyISAM mantiene un contador de registros de toda la tabla. Si fijamos un WHERE, el servidor tan sólo tiene que contar el número de registros totales del resultado, lo que sigue siendo muy rápido. Esto es bastante diferente de….

COUNT(col) cuenta los valores NO NULOS DE LA COLUMNA COL dentro resultado de la consulta, en este caso el servidor necesita revisar todos los registros uno a uno, comprobando cuales de ellos no tienen un valor NULL, y la degradación de velocidad será muy importante.

Via http://arjen-lentz.livejournal.com/

1 comentarios en “COUNT(*) contra COUNT(col)

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *