begin process at 2012 05 28 19:28:29
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive PHP

 > 

Archives

 > 

Bases de données

 > 

Avis de bench !


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Avis de bench !

mardi 11 octobre 2005 à 15:23:02 | Avis de bench !

FhX

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

mardi 11 octobre 2005 à 15:30:52 | Re : Avis de bench !

FhX

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 !

mardi 11 octobre 2005 à 15:43:58 | Re : Avis de bench !

malalam

Administrateur CodeS-SourceS
Réponse acceptée !
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?



mardi 11 octobre 2005 à 15:51:42 | Re : Avis de bench !

FhX

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

mardi 11 octobre 2005 à 16:20:43 | Re : Avis de bench !

malalam

Administrateur CodeS-SourceS
Lol ok...ouf, je pensais être vraiment à la masse pour ne pas comprendre ton raisonnement ;-)
mardi 11 octobre 2005 à 19:42:40 | Re : Avis de bench !

Anthomicro

Réponse acceptée !
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)




    Cette discussion est classée dans : count, mysql, sql, query, bench


    Répondre à ce message

    Sujets en rapport avec ce message

    Retour à la ligne [ par philagui ] Bonjour,je fais afficher tous les resultats d'un champ d'une DB MySQL par l'intermédiaire du script suivant:$sql="SELECT Titre FROM Tableaux WHERE 1"; ## Où est l'erreur ???? bon diou !! [ par kodiask ] voila dite moi pourkoi lorsque je met le code la, il n'y a rien ki saffiche ? (c un système de citation aléatoire)mysql_select_db('cit_tbl',$db); $que sil vou plé où est l'erreur ? [ par kodiask ] voilà g fai un système de citation au hazard et kanje met le code là il maffiche rien du tout , pourkoi ? merci ....mysql_select_db('cit_tbl',$db); $q Erreur dans un script [ par philagui ] Bonjour,est-ce que quelqu'un pourrait me dire où est l'erreur dans ce script:$sql_query="SELECT Titre FROM Tableaux WHERE LIMIT 0,2";//Début de la que Problème de comparaison de date ! [ par punkybreizh ] Bonjour à tous, Depuis quelques jours je bloque sur une de mes pages de mon site qui permet en fait de comparer une date se trouvant dans une base de Insertion recherches mysql [ par rubenxela ] Salut, vous allez tout de suite comprendre que je suis une bille ! Je pense cependant que mon problème n'est pas insurmontable et que vous êtes nombre syntaxe SQL [ par chapata ] Hello , je me posais une question que peut être pas mal se sont déjà posé , qu'es SQL [ par dudu134 ] Dudu134Bonjour à tous le forum,Voici mon code :$query = mysql_query('SHOW COLUMNS FROM nom_logiciels') or die(mysql_error());while ($row = mysql_fetch probleme d'affichage [ par picasso1er ] include('settings/cfg_file.php');include('settings/navigation.php');//CINEMA CATEGORIE$query = $_GET['query'];// on prépare une requête permettant de Petite Question Tablaux SQL & Php [ par rocky42 ] Bonjour a tous jaimerait Crée un boutton Qui Surpime la Ligne Mysql "Ligne Du Tablaux"Voila merci pour vos futur reponceNom</th&


    Nos sponsors


    Sondage...

    Comparez les prix

    CalendriCode

    Mai 2012
    LMMJVSD
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   

    Consulter la suite du CalendriCode

    Photothèque

    A découvrir



     
    Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
    CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
    CodeS-SourceS.com© est une marque déposée tous droits réservés

    Google Coop CodeS-SourceS Google Coop CodeS-SourceS
    Temps d'éxécution de la page : 2,262 sec (3)

    Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales