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

O que é melhor no MYSQL count(*) ou count(1)?


Esta é uma resposta do MySQL.

Eles executam exatamente o mesmo - a menos que você esteja usando MyISAM, então um caso especial para COUNT(*) existe. Eu sempre uso COUNT(*) qualquer maneira.

https://dev.mysql.com/doc /refman/5.6/en/aggregate-functions.html#function_count

Para MyISAM tabelas, COUNT(*) é otimizado para retornar muito rapidamente se o SELECT recupera de uma tabela, nenhuma outra coluna é recuperada e não há WHERE cláusula. Por exemplo:
mysql> SELECT COUNT(*) FROM student;

Esta otimização só se aplica a MyISAM tabelas, porque uma contagem exata de linhas é armazenada para esse mecanismo de armazenamento e pode ser acessada muito rapidamente. COUNT(1) só está sujeito à mesma otimização se a primeira coluna for definida como NOT NULL .
###EDITAlguns de vocês podem ter perdido a tentativa sombria de humor. Prefiro manter isso como uma pergunta não duplicada para qualquer dia em que o MySQL fará algo diferente do SQL Server. Então eu joguei uma votação para reabrir a pergunta (com uma resposta claramente errada).
A otimização MyISAM acima se aplica igualmente a
COUNT(*)
COUNT(1)
COUNT(pk-column)
COUNT(any-non-nullable-column)

A resposta real é que eles são sempre o mesmo.