Utilisation de COUNT [debutant]

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Utilisation de COUNT [debutant]

par Ripat » 06 mai 2005, 15:38

Si les résultats du DISTINCT ne sont pas trop nombreux, ça ne devrait pas être trop différent en perfo mais je viens de faire un test (pour ne pas mourir idiot et surtout pour me rassurer dans mes affirmations) sur un DISTINCT qui donne un retour de 1341 lignes.

(En désactivant le cache-query de MySQL pour ne pas fausser les résultats)

Méthode MySQL : 0.064 sec.
MySQL puis PHP: 0.092 sec.

50 % plus rapide et certainement moins gourmand en mémoire puisque les résultats ne sont stockés qu'une seule fois en mémoire (par le serveur MySQL).

par seayoung » 06 mai 2005, 15:32

c'est rassurant quelque par :roll:

par BFH » 06 mai 2005, 15:23

je vais me cacher
Pour une fois qui sait pas un truc ! :D
ça prouve qu'il est humain !

par seayoung » 06 mai 2005, 15:21

Oui l idée de cyrano est bonne concernant ta requette.
As tu exécuté le petit script que Cyrano t a donné ???

par Cyrano » 06 mai 2005, 15:20

Un COUNT DISTINCT est possible en MySQL.
J'ignorais completement cette possibilité, c'est pour ça que je cherchais une alternative... :oops:
je vais me cacher

par BFH » 06 mai 2005, 15:18

Cyrano, encore une fois merci

Seayoung désolé il a sauté avec le copié collé mais même en le mettant ça marche pas

par Ripat » 06 mai 2005, 15:16

Un COUNT DISTINCT est possible en MySQL.

Code : Tout sélectionner

SELECT COUNT(DISTINCT IGroup) FROM item WHERE ...
Si tu n'as besoin que de ce comptage, il n'est peut-être pas nécessaire de charger un ensemble de résultats dans un tableau par boucle puis de le compter en PHP.

Je pense que tu économiseras du temps et de la mémoire en faisant le comptage directement dans MySQL.

par Cyrano » 06 mai 2005, 15:15

J'ai une autre idée qui m'est venu BFH: le champ IGroupe prend ses valeurs où ? est-ce qu'il y a une autre table avec toutes les valeurs possibles sans doublons ? Parce que ça nous aiderait pas mal...

par seayoung » 06 mai 2005, 15:10

mmm j ai une question bete :
$query="SELECT DISTINCT IGroup FROM item WHERE ReportID=\"$P\" && IPage=\"Résumé\" ";
$result=mysql_query($query)or die (mysql_error());
$row=mysql_fetch_assoc($result);
         
$row1=count($row) //<<manquerait pas un ; par hazard ?
echo $row1; // pour voire combien d'occurrence il trouvait

par Cyrano » 06 mai 2005, 15:09

On va essayer autre chose:
$query="SELECT DISTINCT IGroup FROM item WHERE ReportID=\"$P\" && IPage=\"Résumé\" ";
$result=mysql_query($query)or die (mysql_error());
$i = 0;
while($row=mysql_fetch_array($result))
{
    $i++;
}
echo($i);
Teste ça

par seayoung » 06 mai 2005, 15:06

oui m*** j avais pas vue lol Bien vu Cyrano
dur de pas faire le pont lol

par BFH » 06 mai 2005, 15:05

mettre fetch_array au lieu de fetch_assoc me fait passer de 1 à 2 (au lieu de 6 dommage)
mettre $row1=count($row) ne change rien!

par Cyrano » 06 mai 2005, 14:55

$query="SELECT DISTINCT IGroup FROM item WHERE ReportID=\"$P\" && IPage=\"Résumé\" "; 
$result=mysql_query($query)or die (mysql_error()); 
$row=mysql_fetch_assoc($result); 
         
$row1=count($row)
echo $row1; // pour voire combien d'occurrence il trouvait 
Compte juste le tableau, pas le champ

par seayoung » 06 mai 2005, 14:54

mmm sa change pe etre rien du tout mais si tu met:
$row=mysql_fetch_array($result); 
// a la place de 
$row=mysql_fetch_assoc($result); 
et que tu gardes le reste ... ca marche pas ?

par BFH » 06 mai 2005, 14:43

J'ai voulu faire comme a dit seayoung
$query="SELECT DISTINCT IGroup FROM item WHERE ReportID=\"$P\" && IPage=\"Résumé\" "; 
$result=mysql_query($query)or die (mysql_error()); 
$row=mysql_fetch_assoc($result); 
         
$row1=count($row['IGroup'])
echo $row1; // pour voire combien d'occurrence il trouvait 
Pas de bol, (ça change! :? ) j'obtiens 1 au lieu de 6