mysql.h


COUNT

COUNT(expr)

Devuelve un contador con el número de valores distintos de NULL en las filas recuperadas por una sentencia SELECT:

mysql> SELECT student.student_name,COUNT(*)
    ->        FROM student,course
    ->        WHERE student.student_id=course.student_id
    ->        GROUP BY student_name;

COUNT(*) es algo diferente en que devuelve un contador con el número de filas recuperadas, contengan o no valores NULL. COUNT(*) está optimizado para regresar mucho más rápido si la sentencia SELECT recupera de una tabla, no se piden otras columnas y no exite cláusula WHERE. Por ejemplo:

mysql> SELECT COUNT(*) FROM student;

Esta optimización se aplica sólo a tablas MyISAM y ISAM, ya que se almacena un registro de cuenta exacto para estos tipos de tabla y puede ser accedida muy rápidamente. Para máquinas de almacenamiento transaccionales (InnodB, BDB), almacenar una fila de cuenta exacta es más problemático porque pueden ocurrir múltiples transacciones, y cada una puede afectar a la cuenta.

Si se usa una función de grupo en una sentencia que contenga la cláusula GROUP BY, equivale a agrupar todas las filas.