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

Requêtes MySQL Discussion :

Requetes sql, mysql_fetch_array imbriqués = lenteur


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 31
    Par défaut Requetes sql, mysql_fetch_array imbriqués = lenteur
    Bonjour tout le monde

    Voila mon problème : J'ai un petit forum qui se trouve etre lent car j'ai des requetes et des mysql_fetch_array imbriqués.
    En effet, je fais une premiere requete et boucle pour afficher le nom de mes categories et dans ces memes boucles, je fais une requete qui m'indique les noms de mes forums. En gros, j'ai 25 requetes dans la page...

    Voila le shema :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $req = requete pour chercher le nom des categories;
     
    while(mysql_fecth_array($req1)) {
       ...traitement...
       $req2 = requete pour chercher le nom des forum de cette categorie;
         while(mysql_fecth_array($req2)) {
            ...traitement...
         }
       ...traitement...
    }
    J'ai regardé les différentes optimisations possibles mais j'avoue que je sais pas trop comment m'y prendre

    Pourriez vous m'aider ?
    En vous remerciant

  2. #2
    Membre Expert
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Par défaut
    Je suppose qu'il y a une table pour les catégories et une pour les forums. Pour limiter la casse il faudrait s'assurer qu'il y a bien un index sur les catégories pour la table des forums.

    Cela dit 25 requêtes ça fait mal. Il serait plus judicieux de faire quelque chose dans le genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT categorie.nom, forum.nom
    FROM categorie JOIN forum ON categorie.id = forum.categorie
    ORDER BY categorie.nom
    Avec toujours un index sur "forum.categorie". Comme ça une seule requête, et il ne reste plus dans la boucle qu'à détecter les changements de catégorie.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 31
    Par défaut
    Salut,

    Désole de ma reponse tardive !

    Merci de m'avoir donnée cette technique, je pense l'utiliser bientot !

    Merci beaucoup !

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 31
    Par défaut
    Re bonjour,

    Ma question va peut etre sembler stupide mais elle me titille un peu :
    J'execute la requete, mais apres, comment va se paser le listage avec mysql_fetch_array ? Comment vas ton différencier les champs de la table 1 et de la table 2 ?

  5. #5
    Membre éprouvé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 934
    Par défaut
    Bonjour,
    ils sont déjà différenciés.Comme dit plus haut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT categorie.nom, forum.nom
    FROM categorie JOIN forum ON categorie.id = forum.categorie
    ORDER BY categorie.nom
    ou l'on voit
    categorie.nom
    et
    forum.nom
    .
    Pour la lisibilité, et suivant la méthode de récupération des valeurs des colonnes, il peut-être utile d'écrire la requête comme par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT categorie.nom as 'cat_nom', forum.nom as 'for_nom'
    FROM categorie JOIN forum ON categorie.id = forum.categorie
    ORDER BY categorie.nom

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 31
    Par défaut
    [EDIT] ah c'est bon, j'ai compris , merci beaucoup !

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

Discussions similaires

  1. optimisé une requete SQl avec une requete imbriqués
    Par fabien14 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 16/01/2009, 10h01
  2. [SQL Server 2000] Lenteur de Proc mais pas de la requete :(
    Par Portekoi dans le forum Développement
    Réponses: 9
    Dernier message: 20/11/2007, 17h11
  3. [SQL Server 2000] Lenteur de Proc mais pas de la requete :(
    Par Portekoi dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 20/11/2007, 17h11
  4. Requetes sql, mysql_fetch_array imbriqués = lenteur
    Par simmstein dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/10/2006, 13h43
  5. [MySQL v4.1.9] Lenteur d'une requête SQL
    Par Ithomir dans le forum Langage SQL
    Réponses: 9
    Dernier message: 04/07/2006, 10h05

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