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 :

Optimisation requête simple


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 230
    Par défaut Optimisation requête simple
    J'ai une requête qui croise deux tables mais qui, maintenant qu'il y a un certain nombre d'enregistrement, est longue a s'exécuter (37 secondes).

    Les deux tables sont :
    - famille : 1689 enregistrements
    - personne : 1714 enregistrements

    Voila la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT F.Id, IFNULL(CONCAT(P.Nom, ' ', IFNULL(P.Prenom, '')), CONCAT(' Pas de chef : ', F.Id)) AS NomFamille
    FROM famille AS F
     LEFT JOIN personne AS P ON P.IdFamille = F.Id AND P.IdStatut = 1
    GROUP BY F.Id
    ORDER BY NomFamille
    Elle sélectionne toutes les familles et y affecte son chef (P.IdStatut = 1) s'il y en a un.

    Je trouve que 37 secondes pour exécuter ça est pas normal.

    Que pourrais-je changer pour diminuer le temps d'exécution ?

  2. #2
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 230
    Par défaut
    Apparemment le problème vient du LEFT JOIN, si je mets JOIN elle devient rapide mais je n'ai plus les familles n'ayant pas de chef.

    Que faire !!!

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 230
    Par défaut
    J'ai fait passer le champ personne.IdFamille en index est tout fonctionne bien.

    Une telle différence est-elle normale ?

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Oui, sans index un SGBD est un escargot. Avec c'est une Formule 1.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 230
    Par défaut
    Je ne pensais pas que ça jouais autant.

    Je vais tacher de me documenter dessus.

    Merci.

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Azharis Voir le message
    Je ne pensais pas que ça jouais autant.

    Je vais tacher de me documenter dessus.
    Voir blog de SQLPro :
    http://blog.developpez.com/sqlpro/p7...d-index-ni-de/
    http://sqlpro.developpez.com/cours/quoi-indexer/
    http://sqlpro.developpez.com/optimis...ntenanceIndex/
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

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

Discussions similaires

  1. Optimiser temps de traitement sur des requêtes simples
    Par yoyo88 dans le forum Langage SQL
    Réponses: 21
    Dernier message: 20/02/2015, 12h35
  2. Optimisation requête simple
    Par gmic7 dans le forum Requêtes
    Réponses: 5
    Dernier message: 16/07/2010, 15h59
  3. optimisation requête
    Par alex2205 dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 09/02/2005, 14h15
  4. optimisation requête SQL!!! help!!
    Par anathem62 dans le forum Requêtes
    Réponses: 2
    Dernier message: 24/05/2004, 16h26
  5. [DEBUTANT] TSqlQuery & requête simple
    Par fred64 dans le forum Bases de données
    Réponses: 3
    Dernier message: 21/04/2004, 11h35

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