Avis de bench !

Résolu
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 - 11 oct. 2005 à 15:23
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 - 11 oct. 2005 à 19:42
Voila, à force de faire tout et n'importe quoi (en ce moment j'ai de
l'imagination), je voulais savoir si les pros du bench pouvaient
m'aider un tit peu.



Voila, tout le monde sait comment récupérer le nombre d'enregistrement
d'une requète SQL via COUNT() : (j'ajoute une vérification pour savoir
si le nombre est égal à 0 pour ceux qui ne comprennent pas/mal
l'opérateur ternaire)



<?php

$sql = "SELECT COUNT(*) FROM ma_base";

$query = mysql_query($sql);

$data = mysql_fetch_row($query);

return ( $data[0] == 0 ) ? true : false;

?>



Ca c'est la méthode classique, conseillée par tout le monde. Mais je
viens de trouver un autre moyen pour trouver le même résultat :



<?php

$sql = "SELECT COUNT(*) FROM ma_base";

$query = mysql_query($sql);

return ( count( mysql_fetch_row($query) ) === 0 ) ? true : false;

?>



Sauf que, je me demande si c'est pas plus lent d'utiliser cette methode
plutôt que celle du dessus. Quelqu'un pourrait me bencher ca sur
quelques itérations histoire de voir ce que ca donne ? (ou qui a déja
eu une idée similiaire et qui a abandonné ?)



Merci :)

5 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
11 oct. 2005 à 15:43
Hello,



j'ai de gros doutes...:-)

D'abord, tu fais un count () en plus, au lieu d'un accès direct.

Ensuite, j'ai un peu de mal à te suivre (mais je suis fatigué
aujourd'hui lol) : COUNT (*) écrit ainsi ne va te ramener qu'un tableau
avec 1 seule entrée, à priori.

Donc ton count php va toujours te ramener 1...?

Donc ta vérification est toujours fausse?



Bref dans un cas tu cherches à savoir si la valeur de l'enregistrement
à la clef 0 du tableau ramené est à 0 ou non. dans le second, tu
cherches à savoir si le tableau ramené contient 0 enregistrement ou
non.

Non?
3
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
11 oct. 2005 à 19:42
Salut,



" Donc ton count php va toujours te ramener 1...?

Donc ta vérification est toujours fausse?"



exact lol



sinon pour le mysql_num_rows() c'est largement plus lent car ça
récupère tous les enregistrements de la requête (champs et valeur des
champs, bref avec une table à 100000 d'enregistrements tente un select
machin avec un num_rows et un COUNT(*) tu verras la différence de temps
de génération)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
3
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
11 oct. 2005 à 15:30
J'en viens même à me demander pourquoi faire un count( mysql_fetch_row() ) sachant que y'a mysql_num_rows() qui existe...



Bref... :/ A voir si c'est pas plus rapide !
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
11 oct. 2005 à 15:51
Voui sisi, je me suis emmeler sur le count php. Donc c'est pas bon, et tant mieux.

Ca m'arrange de savoir que j'écris de grosses conneries de temps à autre :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
11 oct. 2005 à 16:20
Lol ok...ouf, je pensais être vraiment à la masse pour ne pas comprendre ton raisonnement ;-)
0
Rejoignez-nous