IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Optimisation récupération des résultats [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 46
    Par défaut Optimisation récupération des résultats
    Bonjour,

    Voici ce qui m'arrive : j'ai une requête sur deux tables qui ont chacune 14000 entrées.
    Je fais une requête qui renvoie environ 6000 résultats, comprenant 4 champs, un INT, deux DOUBLE, et un ENUM.

    Le benchmark pour la requête seule est satisfaisant, mais php met un temps fou à récupérer le résultat SQL d"une part, et à faire la sortie à l'affichage d'autre part.

    Le benchmark SQL est extrait de phpMyAdmin, et indique 2,9 secondes. Le benchmark PHP indique 15 secondes en tout, requête comprise.

    Le résultat sql est bouclé pour ajout dans un tableau avec les fonctions mysql_*, et pour finir, le tout est envoyé avec json_encode().

    Connaissez-vous un moyen d'extraire ces résultats plus rapidement à partir du moment où ils sont transmis à PHP ?

    Merci pour votre attention.

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    montre ton code

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 46
    Par défaut
    Hey, je l'ai plus sur moi, mais il s'agit d'un bouclage type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $q=mysql_query("La requête, je m'en souviens pas, mais à priori elle est est suffisamment rapide");
    $resp=array();
     
    while($d=mysql_fetch_object($q)){
        array_push($resp,array($d->id,$d->lat,$d->lng,$d->theme));
    }
     
    echo json_encode($resp);

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    fait juste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while ($d = mysql_fetch_assoc($q)) {
        $resp[] = $d
    }
     
    echo json_encode($resp);
    t'as mysqli ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 46
    Par défaut
    Merci,

    J'ai fait les tests sur un serveur toute la journée, et j'ai oublié d'emporter les FTP avec moi, je pourrai tester demain première heure.

    Concernant mysqli, je pourrai l'avoir, les bases seront sur un serveur à part, configuré que pour les BDD.

    C'est plus rapide en mysqli ?

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    c'est surtout plus moderne, mysql_* est une vielle extension, si ton mysqli est compilé avec mysqlnd t'auras accès au fetch_all
    donc juste a faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $result = mysqli_query('...');
    echo json_encode(mysqli_fetch_all($result));

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupération des résultats des méthodes dans un service WCF
    Par est09 dans le forum Windows Communication Foundation
    Réponses: 16
    Dernier message: 02/04/2009, 16h44
  2. [RegEx] récupération des résultats de preg_match_all
    Par Dharius dans le forum Langage
    Réponses: 2
    Dernier message: 16/10/2008, 14h48
  3. [EJBQL] [EJB3] [Junit] Récupération des résultats d'un select
    Par nramariavelo dans le forum Java EE
    Réponses: 1
    Dernier message: 04/10/2006, 16h22
  4. Réponses: 2
    Dernier message: 21/05/2006, 14h02
  5. Réponses: 2
    Dernier message: 29/03/2006, 09h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo