Mysql
 sql >> Base de données >  >> RDS >> Mysql

Qu'y a-t-il de mieux dans MYSQL count(*) ou count(1) ?

Ceci est une réponse MySQL.

Ils fonctionnent exactement de la même manière - sauf si vous utilisez MyISAM, alors un cas particulier pour COUNT(*) existe. J'utilise toujours COUNT(*) de toute façon.

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

Pour MyISAM tableaux, COUNT(*) est optimisé pour revenir très rapidement si le SELECT extrait d'une table, aucune autre colonne n'est extraite et il n'y a pas de WHERE clause. Par exemple :

mysql> SELECT COUNT(*) FROM student;

Cette optimisation ne s'applique qu'à MyISAM tables, car un nombre exact de lignes est stocké pour ce moteur de stockage et peut être consulté très rapidement. COUNT(1) n'est soumis à la même optimisation que si la première colonne est définie comme NOT NULL .

###EDITCertains d'entre vous ont peut-être raté la tentative d'humour noir. Je préfère garder cela comme une question non dupliquée pour un tel jour où MySQL fera quelque chose de différent de SQL Server. J'ai donc lancé un vote pour rouvrir la question (avec une réponse clairement erronée).

L'optimisation MyISAM ci-dessus s'applique également à

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

Donc la vraie réponse est qu'ils sont toujours le même.