[PHP] - [MySQL] - Optimisation de SELECT COUNT(*)

- Optimisation de SELECT COUNT(*) [PHP] - [MySQL] - PHP - Programmation

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 ..."  
Reply

Marsh Posté le 28-08-2002 à 16:56:15   

Reply

Marsh Posté le 28-08-2002 à 16:58:14    

count
 
déjà dit 100fois
 
et tu pouvais aussi betement essayeR...


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

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 :D


Message édité par Zero Cool le 28-08-2002 à 17:01:49

---------------
"D'abord arrêter le chimique, et après reprendre l'école ..."  
Reply

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 :D


ben, tu boucles 500fois sur la meme solution en faisant des mesures de temps d'execution de ton script et basta...


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 28-08-2002 à 17:09:11    

count(clé) est pas plus rapide que count(*) par hasard ?

Reply

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 !


---------------
"D'abord arrêter le chimique, et après reprendre l'école ..."  
Reply

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? :)


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 28-08-2002 à 17:15:51    

j'en sais rien, c'était plus une question qu'une affirmation :ange:

Reply

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 :ange:



pareil pour moi :o


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 28-08-2002 à 17:26:06    

:lol:

Reply

Marsh Posté le 28-08-2002 à 17:26:06   

Reply

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.

Reply

Marsh Posté le 24-10-2006 à 15:46:40    

query cache ?

Reply

Marsh Posté le 24-10-2006 à 15:51:38    

count(*)

Reply

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 ;)

Reply

Marsh Posté le 24-10-2006 à 16:40:16    

stats pas à jour?

Reply

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.
Par conséquent : EXTREMEMENT RAPIDE.


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

Message cité 1 fois
Message édité par Djebel1 le 24-10-2006 à 16:48:17
Reply

Marsh Posté le 24-10-2006 à 16:49:29    

c'est quoi ton histoire de guillemet ?

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed