count () ou compteur

count () ou compteur - PHP - Programmation

Marsh Posté le 15-10-2004 à 14:18:18    

Petite question rapide  
qu'est-ce qui vaut mieux faire en général ?  
un system de compteur où le chiffre sera stocké dans un champs de la base.
ou une requete count ?

Reply

Marsh Posté le 15-10-2004 à 14:18:18   

Reply

Marsh Posté le 15-10-2004 à 14:18:57    

count

Reply

Marsh Posté le 15-10-2004 à 20:05:38    

ça depend car mysql optimise les count sans condition WHERE
mais si c'est un count un peu pointilleux il vaux mieux un compteur

Reply

Marsh Posté le 16-10-2004 à 17:14:39    

si t'efface un enregistrement le compteur sera faussé


---------------
-Hassan Cehef --> C'est possible -Roberttripoux --> Les bons comptes font les bons amis
Reply

Marsh Posté le 16-10-2004 à 23:17:09    

si t'efface un enregistrement tu decremente le compteur !

Reply

Marsh Posté le 16-10-2004 à 23:36:16    

En général, le count est mieux pour 2 raisons :
- ça t'évite des incohérences de bases (tu es sûr que le nb de lignes qu'on te donne est exactement le nombre d'enregistrements)
- la plupart des SGBD sont optimisés pour faire fonctionner le COUNT le plus rapidement possible
 
Maintenant il y a quand même des cas particuliers où la requête COUNT est trop complexe et dans ce cas un champ avec le nombre d'enregistrement est plus pratique à utiliser (mais ne garantit pas à coup sûr le bon résultat)


Message édité par Yonel le 16-10-2004 à 23:37:07
Reply

Marsh Posté le 17-10-2004 à 01:46:34    

merci bcp pour vos réponses !
En plus le choix du count me plaît beaucoup plus :)

Reply

Marsh Posté le 10-11-2004 à 00:46:08    

rainbow_efreet a écrit :

si t'efface un enregistrement tu decremente le compteur !


 
pas dans le cas d'un auto-increment ( ce que je pensais) maintenant s'il gere son propore compteur c'est different.
 
ciao


---------------
-Hassan Cehef --> C'est possible -Roberttripoux --> Les bons comptes font les bons amis
Reply

Marsh Posté le 10-11-2004 à 09:18:39    

Hmmm... je sais pas si c'est mieux dans tous les cas. Je m'occupe d'un forum, et je gère la plupart des compteurs par des champs.
 
Sur la liste des forums (là ou j'affiche pour chaque forum son nom, nombre de topics, nombre de posts, etc), ma requête ressemble (en simplifiant au maxiumum) à :

Code :
  1. SELECT info_forum1, info_forum_2, ..., nbtopics, nbposts
  2. FROM forum


 
Si je veux obtenir la même chose avec des COUNT, j'obtiens un truc comme ça :

Code :
  1. SELECT F.info_forum1, F.info_forum2, ..., COUNT(DISTINCT T.id) AS nbtopics, COUNT(P.id) as nbposts
  2. FROM forum F, topic T, post P
  3. WHERE T.forum_id = F.id AND P.topic_id = T.id
  4. GROUP BY F.id


 
Dans ce genre de situations, je doute que la seconde solution soit la plus rapide.  [:figti]


Message édité par sielfried le 10-11-2004 à 09:21:32

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Sujets relatifs:

Leave a Replay

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