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

¿Qué es mejor en MYSQL count(*) o count(1)?

Esta es una respuesta de MySQL.

Funcionan exactamente igual, a menos que esté usando MyISAM, entonces un caso especial para COUNT(*) existe Siempre uso COUNT(*) de todos modos.

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

Para MyISAM tablas, COUNT(*) está optimizado para regresar muy rápidamente si SELECT recupera de una tabla, no se recuperan otras columnas y no hay WHERE cláusula. Por ejemplo:

mysql> SELECT COUNT(*) FROM student;

Esta optimización solo se aplica a MyISAM tablas, porque se almacena un recuento de filas exacto para este motor de almacenamiento y se puede acceder a él muy rápidamente. COUNT(1) solo está sujeto a la misma optimización si la primera columna se define como NOT NULL .

###EDITAlgunos de ustedes pueden haberse perdido el oscuro intento de humor. Prefiero mantener esto como una pregunta no duplicada para cualquier día en que MySQL haga algo diferente a SQL Server. Así que voté para reabrir la pregunta (con una respuesta claramente incorrecta).

La optimización anterior de MyISAM se aplica igualmente a

COUNT(*)
COUNT(1)
COUNT(pk-column)
COUNT(any-non-nullable-column)

Así que la verdadera respuesta es que son siempre lo mismo.