- Optimisation de SELECT COUNT(*) [PHP] - [MySQL] - PHP - Programmation
Marsh Posté le 28-08-2002 à 16:58:14
count
déjà dit 100fois
et tu pouvais aussi betement essayeR...
Marsh Posté le 28-08-2002 à 17:01:10
--greg-- a écrit a écrit : count déjà dit 100fois |
tu rigoles j'ai trouvé que dalle sur le forum
--greg-- a aussi écrit a écrit : et tu pouvais aussi betement essayeR... |
bah ouaip mais la différence se voit pas trop à l'oeil nu
Marsh Posté le 28-08-2002 à 17:06:35
Zero Cool a écrit a écrit : tu rigoles j'ai trouvé que dalle sur le forum |
ben non je rigole pas.
par contre le moteur de recherche du forum
Zero Cool a écrit a écrit : bah ouaip mais la différence se voit pas trop à l'oeil nu |
ben, tu boucles 500fois sur la meme solution en faisant des mesures de temps d'execution de ton script et basta...
Marsh Posté le 28-08-2002 à 17:11:33
antp a écrit a écrit : count(clé) est pas plus rapide que count(*) par hasard ? |
Euh non justement ça ça compte que les distincts je crois !
Marsh Posté le 28-08-2002 à 17:11:45
antp a écrit a écrit : count(clé) est pas plus rapide que count(*) par hasard ? |
count(*) utilise pas la clé primaire par hasard?
Marsh Posté le 28-08-2002 à 17:15:51
j'en sais rien, c'était plus une question qu'une affirmation
Marsh Posté le 28-08-2002 à 17:16:40
antp a écrit a écrit : j'en sais rien, c'était plus une question qu'une affirmation |
pareil pour moi
Marsh Posté le 28-08-2002 à 18:09:34
SELECT COUNT(*) FROM matable retourne la valeur Rows de SHOW TABLE STATUS LIKE 'matable' et ne compte pas.
Par conséquent : EXTREMEMENT RAPIDE.
Marsh Posté le 24-10-2006 à 16:00:04
A l'instar de ton navigateur web qui stocke les images d'un site pour le réafficher plus vite, MySQL stocke les résultats des dernières requetes afin d'afficher plus vite le résultat
Marsh Posté le 24-10-2006 à 16:44:32
Dost67 a écrit : SELECT COUNT(*) FROM matable retourne la valeur Rows de SHOW TABLE STATUS LIKE 'matable' et ne compte pas. |
faux pour les tables InnoDB. Il faut alors parcourir l'index de la table. C'est stocké pour les tables MyISAM.
Citation : InnoDB ne conserve pas de compte interne de ligne pour une table. Cela serait en fait compliqué, à cause du multi-versionnage. Pour traiter une commande SELECT COUNT(*) FROM T, InnoDB doit scanner l'index de la table, ce qui prendra du temps si la table n'est pas enregistrée dans le buffer. Pour accélérer le compte, vous devez créer un compteur de table vous-même, et votre application le modifiera à chaque ajout ou suppression. Si votre table ne change pas souvent, l'utilisation du cache sera une bonne solution. SHOW TABLE STATUS peut aussi être utilisé pour obtenir un décompte approximatif des lignes. See Section 15.12, « Conseils pour l'amélioration des performances InnoDB ». |
http://dev.mysql.com/doc/refman/5. [...] tions.html
Marsh Posté le 24-10-2006 à 16:49:29
Reply
Marsh Posté le 28-08-2002 à 16:56:15
Tchüss tlm,
A votre avis, quelle méthode est la plus rapide pour connaître le nombre de records d'une table :
- faire un "SELECT COUNT(*)" directement
ou
- faire un select sur le + petit champ (en taille) de la table, puis un mysql_num_rows ??
Je me tâte ...
---------------
"D'abord arrêter le chimique, et après reprendre l'école ..."