2010-10-12 23 views

Répondre

6

C'est une différence d'implémentation. InnoDB prend en charge les transactions et doit donc compter les lignes en fonction de votre vue transactionnelle des tables. Étant donné que MyISAM ne prend pas en charge les propriétés ACID, si une ligne est insérée, elle est insérée pour tout le monde. Par conséquent, elle peut simplement mettre à jour un nombre qu'elle conserve dans le moteur de stockage.

+1

+ 1 faites défiler vers le bas et lisez le post de Ken Jacob (5) http://www.mysqlperformanceblog.com/2007/04/10/count-vs-countcol/ –

6

MyIsam a le nombre de lignes stockées quelque part et donc la requête est presque instantanée, InnoDB doit analyser la table pour obtenir le nombre total. Si vous avez un compte conditionnel (Ex: "SELECT COUNT (*) OU CLIENT = 4") ont tous deux faire l'analyse et il n'y a pas beaucoup de différence dans ce cas

Source:

http://www.mysqlperformanceblog.com/2006/12/01/count-for-innodb-tables/

+0

+ 1: Bon lien de soutien! –