sql >> Base de Datos >  >> RDS >> Mysql

count(*) y count(column_name), ¿cuál es la diferencia?

  • COUNT(*) cuenta todas las filas en el conjunto de resultados (o grupo si se usa GROUP BY).
  • COUNT(column_name) solo cuenta aquellas filas donde column_name No es nulo. Esto puede ser más lento en algunas situaciones, incluso si no hay valores NULL porque el valor debe verificarse (a menos que la columna no admita valores NULL).
  • COUNT(1) es lo mismo que COUNT(*) ya que 1 nunca puede ser NULL.

Para ver la diferencia en los resultados puedes probar este pequeño experimento:

CREATE TABLE table1 (x INT NULL);
INSERT INTO table1 (x) VALUES (1), (2), (NULL);
SELECT
    COUNT(*) AS a,
    COUNT(x) AS b,
    COUNT(1) AS c
FROM table1;

Resultado:

a   b   c
3   2   3