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

Outils MySQL Discussion :

requête qui tourne indéfiniment


Sujet :

Outils MySQL

  1. #1
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut requête qui tourne indéfiniment
    Salut,
    Comme j'ai déjà eu l'occasion de le dire, je suis loin d'être un champion dans les requêtes.
    En utilisant l'interface phpMyAdmin, j'essaie d'exécuter le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT COUNT(*)
    FROM Tree
    JOIN Stem USING (TreeID)
    JOIN Measurement ON Measurement.StemID=Stem.StemID AND
    Measurement.TreeID=Stem.TreeID
    JOIN MeasurementAttributes ON
    Measurement.MeasureID=MeasurementAttributes.MeasureID
    WHERE Measurement.CensusID=6 AND MeasurementAttributes.TSMCode LIKE 'D%';
    mais voilà la page se charge indéfiniment sans qu'aucun resultat ni aucun message d'erreur n'apparaissent...
    j'ai essayé de passer les ON dans la clause WHERE mais idem...
    Voyez-vous quelque chose de faux dans ma requête?

    merci pour vos conseils

  2. #2
    Membre éprouvé
    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
    Points : 1 249
    Points
    1 249
    Par défaut
    Ca a l'air d'aller... Il est possible de savoir si mysql rame, pour être certain que c'est un pb de performances ?

    Tout ce que je vois c'est un problème d'indexes. Si les tables sont grosses et qu'il n'y a pas d'indexe les liaisons peuvent être (trop) couteuses. Que dit 'EXPLAIN' ? Quelles sont les tailles des tables ?

    Sinon toutes les liaisons sont-elles indispensables pour juste comptrer des couples MeasurementAttributes-Measurement ? Est-ce qu'un 'Measurement.TreeID IS NOT NULL' ne suffirait pas ?

  3. #3
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    Oui certaines tables ont pas mal d'enregistrements mais elles sont indexées.

    Que dit 'EXPLAIN' ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     table  	 type  	 possible_keys  	 key  	 key_len  	 ref  	 rows  	 Extra
    *********************************************************************************************************
    Tree  	index  	PRIMARY  	PRIMARY  	22  	NULL  	368122  	Using index
    **********************************************************************************************************
    Stem  	ref  	PRIMARY  	PRIMARY  	4  	BCI.Tree.TreeID  	7708  	Using index
    ***********************************************************************************************************
    Measurement  	ref  	PRIMARY,TreeID,StemID,CensusID  	StemID  	11  	Stem.StemID  	10  	Using where
    ***********************************************************************************************************
    MeasurementAttributes  	range  	PRIMARY  	PRIMARY  	10  	NULL  	140744  	Using where; Using index

  4. #4
    Membre éprouvé
    Avatar de Biglo
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 537
    Points : 984
    Points
    984
    Par défaut
    Ta requête fait la même chose avec le client console ou bien une autre interface comme QueryBrowser ?

  5. #5
    Membre éprouvé
    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
    Points : 1 249
    Points
    1 249
    Par défaut
    A supposer que le problème vienne effectivement de la requète plutôt que du client, une idée serait d'essayer par petit bout en ajoutant une table à chaque fois, pour localiser le problème. Et/ou en se limitant à un seul tree car il semble y en avoir énormément, histoire de valider que ça marche.

    Il manquerait peut-être un indexe sur (Measurement.StemID, Measurement.TreeID), suivant la répartititon des enregistrements.
    Ou même (Measurement.StemID, Measurement.TreeID, Measurement.CensusID) pour faire 'JOIN Measurement ON Measurement.StemID=Stem.StemID AND
    Measurement.TreeID=Stem.TreeID AND Measurement.CensusID=6'

    Autre idée, inverser l'ordre... même si faire un 'like' sur tous les 'MeasurementAttributes' n'est peut-être pas une bonne idée vu qu'ils doivent être très nombreux.

  6. #6
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    Ta requête fait la même chose avec le client console ou bien une autre interface comme QueryBrowser ?
    la base a été transféré sur un autre serveur plus costaud,
    j'ai essayé directement dans mysql en ligne de commande sans passé par phpmyadmin, et c'est toujours pareil, donc il doit y avoir un schmurtz dans la conception de la base.

    une idée serait d'essayer par petit bout en ajoutant une table à chaque fois, pour localiser le problème. Et/ou en se limitant à un seul tree car il semble y en avoir énormément, histoire de valider que ça marche.
    je vais essayer...

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

Discussions similaires

  1. AMD athlon 3200+ qui tourne a 1100 mhz au lieu de 2200 mhz
    Par phoenix440 dans le forum Composants
    Réponses: 7
    Dernier message: 09/03/2005, 15h38
  2. [VB6] Un prog. qui tourne en continu en parallèle d'autre appli?
    Par jackazerty dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 14/08/2004, 19h24
  3. Pb de rand() qui tourne en boucle
    Par MadChris dans le forum MFC
    Réponses: 3
    Dernier message: 26/06/2004, 16h24
  4. Réponses: 5
    Dernier message: 25/06/2004, 15h57
  5. Réponses: 19
    Dernier message: 07/11/2003, 08h10

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