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 :

Lenteur requete depuis migration


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 14
    Points : 14
    Points
    14
    Par défaut Lenteur requete depuis migration
    Bonjour,

    Depuis la migration de notre serveur sql de la version 3.23.54 à la version 5.0.22
    (changement de machine aussi pour être sur une plus puissante),

    une requete est plus lente pour passer de 0.24 sec à 26.44 sec (ça en fait du temps).

    La requete est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    SELECT DISTINCT m.machine AS code_barre, m.confighard AS confighard, CONCAT( all3.nom, " ", all3.prenom ) AS name, all3.service AS service, m.etat AS etat, m.site AS site 
    FROM listesoft li, logiciels lo, machine m 
    LEFT JOIN all3 ON all3.TGI = m.TGI 
    LEFT JOIN listelement ON m.machine = listelement.machine 
    LEFT JOIN elements ON elements.element = listelement.element 
    LEFT JOIN confighard ON confighard.confighard = m.confighard 
    LEFT JOIN configip ON m.configip = configip.configip 
    LEFT JOIN configmac ON configmac.configmac = m.configmac 
    WHERE ( 
    li.logiciel = lo.logiciel 
    AND m.machine = li.machine 
    ) 
    AND ( 
    ( 
    lo.nom = "internet explorer" 
    AND lo.version = "7.00.5730.13" 
    ) 
    ) 
    AND ( 
    li.logiciel = lo.logiciel 
    AND m.machine = li.machine 
    ) 
    ORDER BY m.machine
    (dans ma base elle n'affiche qu'un résultat d'où l'inquiétude du temps qu'il met depuis la version 5).

    Un EXPLAIN me donne ça :

    id select_type table type possible_keys key key_len ref rows Extra
    1 SIMPLE li ALL NULL NULL NULL NULL 11613 Using temporary; Using filesort
    1 SIMPLE m eq_ref PRIMARY PRIMARY 7 is-park.li.machine 1 Using where
    1 SIMPLE all3 eq_ref PRIMARY PRIMARY 8 is-park.m.TGI 1
    1 SIMPLE listelement ALL NULL NULL NULL NULL 2360 Distinct
    1 SIMPLE elements eq_ref PRIMARY PRIMARY 4 is-park.listelement.element 1 Using index; Distinct
    1 SIMPLE confighard eq_ref PRIMARY PRIMARY 30 is-park.m.confighard 1 Using index; Distinct
    1 SIMPLE configip eq_ref PRIMARY PRIMARY 4 is-park.m.configip 1 Using index; Distinct
    1 SIMPLE configmac eq_ref PRIMARY PRIMARY 4 is-park.m.configmac 1 Using index; Distinct
    1 SIMPLE lo eq_ref PRIMARY PRIMARY 4 is-park.li.logiciel 1 Using where; Distinct

    Merci de votre aide.

  2. #2
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 563
    Points : 2 390
    Points
    2 390
    Par défaut
    Il y a combien d'enregistrement dans ta table la plus grosse ?

    Tu as bien placé des index dans tes table ?
    Zend Certified PHP Engineer

    « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 14
    Points : 14
    Points
    14
    Par défaut
    Pour info, cette appli web a été développé par plusieurs personnes qui ont taffés là où je bosse (et qui ne sont plus là car souvent stagiaires). Moi je suis l'admin système. Je connais bien le php et mysql mais c'est assez dur de reprendre un code pas fait par soi même. Quand c'est bien fait, ça va.

    La table la plus grosse contient 12000 enregistrements.
    Mais je commence à avoir un début de solution.

    la requete marchant bien et rapidement sous mysql 3.23, je me dit que c'est surement qu'il faut l'adapter pour mysql 5.

    Et en modifiant la requete par ceci (je n'affiche pas ci dessous les élements de requetes qui sont inutiles dans ce cas là, comme 3 - 4 LEFT JOIN):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT DISTINCT m.machine AS code_barre, m.confighard AS confighard, CONCAT( a.nom, " ", a.prenom ) AS name, a.service AS service, m.etat AS etat, m.site AS site 
    FROM machine m 
    LEFT JOIN all3 a ON m.TGI = a.TGI
    LEFT JOIN listesoft li ON m.machine = li.machine
    LEFT JOIN logiciels lo ON li.logiciel = lo.logiciel
    WHERE
    lo.nom = "internet explorer" 
    AND lo.version = "7.00.5730.13" 
    ORDER BY m.machine
    Donc cette requete affiche la bonne chose et bien rapidement (0.18 sec) sous mysql 5.0. Mais désormais, cette requête me fait planter mysql sous mysql 3.23 ou mais énormément de temps mais j'ai pas attendu lol (ça je m'en fou un peu car le système ne sera plus utilisé).
    C'est normal?

  4. #4
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 563
    Points : 2 390
    Points
    2 390
    Par défaut
    C'est plutot bizarre

    Je ne voi pas d'erreur, sauf peut etre la ligne "FROM machine m" ou il faudrait mettre "FROM machine AS m" mais peut etre que la 1er sintaxe est également correcte.
    Zend Certified PHP Engineer

    « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana

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

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Points : 1 249
    Points
    1 249
    Par défaut
    Ce qui pourrait expliquer le changement de performances, hors peut-être des choix différents en terme de plan d'éxécution, est le changement de priorité entre la virgule et JOIN. Une chance (ou pas) que la requête fonctionne quand même.

    Si je ne mélange pas, pour mysql 5 les JOIN ont la priorité. Il faudrait voir si
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    [...]
    FROM (listesoft li, logiciels lo, machine m)
    LEFT JOIN all3 ON all3.TGI = m.TGI
    [...]
    rétablie le comportement d'orrigine.

    D'un autre côté réécrire la requête de façon plus carrée et minimaliste n'est peut-être pas un mal...

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

Discussions similaires

  1. [WS 2008] Lenteur Internet depuis migration Windows Server 2008
    Par aorelian dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 25/08/2011, 12h56
  2. [ODBC] Lenteur des requetes depuis un AS400
    Par pierrot2908 dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 31/05/2010, 14h57
  3. [VBA-E] Requetes depuis Excel sur une Base Access sécurisée
    Par DhiSan dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 31/05/2006, 18h44
  4. Executer une requete depuis un évènement
    Par Eric26 dans le forum Access
    Réponses: 3
    Dernier message: 31/03/2006, 14h47
  5. [Struts] Paramètre en requête depuis la servlet
    Par cowa dans le forum Struts 1
    Réponses: 16
    Dernier message: 01/03/2006, 17h39

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