Saluton,
Avec MySQL c’est SELECT COUNT() qui sera le plus performant , tout au moins en ISAM, car la table ne sera même pas parcourue et le nombre de lignes sera directement lu dans le fichier de description.
COUNT() car COUNT(colonne) ne comptabilisera pas les lignes ou colonne est NULL. nous avons débattu de ce sujet ici pas plus tard qu’avant-hier.
Donc d’après la dernière réponse sur Phpdebutant.org, le mieux est d’utiliser la 3ème méthode puisque mysql_unbuffered_query n’utilise pas de ressource.
Tu peux me le confirmer ? merci.
remarque : mysql_unbuffered_query ne fonctionne peut-être pas avec mysql_num_rows mais fonctionne très bien avec mysql_fetch_assoc.
Mais peut-être qu’à ce moment là, c’est mysql_fetch_assoc qui pompe beaucoup de ressource ?..
Si l’on est bien dans le cadre du cahier des charges initial de ta question :[quote=""]
compter le nombre de fiches d’une BDD
[/quote]
(au passage il s’agit du nombre de lignes d’une table de BDD), sans besoin de parcourir le résultat, $res=msql_query(“SELECT COUNT(*) FROM table”) couplé à echo mysql_result($res) est ce qui te donnera le plus rapidement le résultat en consommant le moins de ressources.
("Ces [mysql_fetch_*] sont NETTEMENT plus rapides")
Ensuite, c’est mimi de dire l’un est mieux, mais n’oublie pas que cela dépend de ce que tu veux faire. Les deux requêtes sont parfaitement différentes : la première va simplement le nombre de résultats d’une requête bufferisée, la seconde le nombre de données dans la table.
Pour la rapidité, tu as qu’à tenter un for ( $i in [0,10000]) en testant le temps d’éxécution de chaque via microtime().
bon ! au vu de ce que j’ai pu lire un peu partout et surtout que je dois minimiser au max les ressources serveurs, je pense opter pour :
$result = mysql_unbuffered_query("SELECT COUNT(*) AS nb FROM $table1");
$row = mysql_fetch_assoc($result);
$nb_sites= $row['nb'];
En effet, c’est pour faire des stats sur une même page et je voudrais pouvoir travailler les 4 tables qui composent mon site. Donc plusieurs requêtes sur chaque table afin d’avoir toutes les données qui m’intéressent.