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.