Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

count(*) e count(column_name), qual é a diferença?

  • COUNT(*) conta todas as linhas no conjunto de resultados (ou grupo se estiver usando GROUP BY).
  • COUNT(column_name) conta apenas as linhas em que column_name não é nulo. Isso pode ser mais lento em algumas situações, mesmo que não haja valores NULL porque o valor deve ser verificado (a menos que a coluna não seja anulável).
  • COUNT(1) é o mesmo que COUNT(*) já que 1 nunca pode ser NULL.

Para ver a diferença nos resultados, você pode tentar este pequeno 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