15-03-2010, 12:02 AM
(14-03-2010, 11:35 PM)Allwise a écrit : Sur les tables en MyIsam un COUNT c'est très rapide, le résultat est toujours en cache. J'ai fait un SELECT COUNT(*) sur une table de 21 541 849 enregistrements, résultat instantané
Et oui !
Citation : COUNT(*) est optimisée pour retourner très rapidement un résultat si SELECT travaille sur une table, qu'aucune autre colonne n'est lue, et qu'il n'y a pas de clause WHERE. Par exemple :
mysql> SELECT COUNT(*) FROM student;
Cette optimisation s'applique uniquement pour les tables MyISAM et ISAM, car un compte exact du nombre de lignes est stocké pour ces types de tables, et il peut être lu très rapidement. Pour les moteurs de tables transactionnels, (InnodB, BDB), le stockage de cette valeur est plus problématique, car plusieurs transactions peuvent survenir en même temps, et affecter toutes ce compte.