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 de requêtes MySql


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 304
    Points : 53
    Points
    53
    Par défaut Optimisation de requêtes MySql
    Bonjour,
    J'ai la une requete qui met beaucoup de temps à s'executer sur des grosses tables.
    J'aimerais savoir comment la rendre plus rapide. Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $nom_rec=mysql_query("SELECT DISTINCT ref FROM recommendations ORDER BY noReference");
     
    // pour chaque 'ref' de la table 'recommandations'
    while($name_rec = mysql_fetch_array($nom_rec)){		
            echo "<p>".$name_rec['ref'];
     
    	$q_nb_rec = mysql_query("SELECT count(ref) AS compte FROM recommandations WHERE ref='".$name_rec['ref']."' AND noInspection IN (SELECT noInspection FROM inspections WHERE typeInspection='".$id."')");
     
            $nb_rec = mysql_fetch_array($q_nb_rec);
     
            echo $nb_rec['compte']."</p>";
    }

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 537
    Points : 2 548
    Points
    2 548
    Par défaut
    Je crois que ton bonheur se trouves dans la clause group by et/ou having

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    Par défaut
    salut,

    il faudrait que tu nous donnes,

    la description des tables
    les index
    les clefs primaires

    la requête qui est lente.

    Car ici j'en voit deux..... je ne sais pas quelle est la requête lente.

    Après on verra ce qu'on peut faire.

    bye

  4. #4
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    salut,

    peut etre en faisant une seule requete au lieu de deux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT ref,count(*) AS compte FROM recommandations 
    WHERE noInspection IN (SELECT noInspection FROM inspections WHERE typeInspection='".$id."'
    group by ref

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 304
    Points : 53
    Points
    53
    Par défaut
    Ouai alors justement je pense que c'est super lent parce qu'il n'y a ni clés primaire ni index ni rien

    La base de données a été copié via les fonction ODBC de PHP depuis une base Access mais je n'ai jamais compris comment utiliser la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resource odbc_primarykeys ( resource $connection_id , string $qualifier , string $owner , string $table )
    Donc les tables sont crées sans clés primaire...

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    Par défaut
    Ben donnes nous le schéma de ta table stp.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 304
    Points : 53
    Points
    53
    Par défaut
    le schema de ma table?

    Ben pour la table t_jiginspections les champs sont :
    noInspection
    site (unique)
    idInspecteur
    dateInspection
    note
    rappel
    commentaires
    cloture
    dateRapport
    typeInspection

    Et pour la table t_jigrecominspections les champs sont:
    noInspection
    prioritaire
    cloture
    description
    noReference
    nonSatisfaisant

Discussions similaires

  1. Optimiser ma requête MySQL
    Par lusitain91 dans le forum Requêtes
    Réponses: 2
    Dernier message: 06/01/2015, 23h33
  2. optimisation requête mysql
    Par ionesco dans le forum Requêtes
    Réponses: 1
    Dernier message: 08/10/2009, 13h14
  3. [MySQL] [MySQL] Optimisation de requête
    Par Falistos dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 30/06/2009, 09h51
  4. Réponses: 4
    Dernier message: 29/11/2007, 11h56
  5. Optimiser une requête mysql
    Par Raideman dans le forum Requêtes
    Réponses: 2
    Dernier message: 05/09/2007, 22h18

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