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 requete avec sous-requetes multiples


Sujet :

Requêtes MySQL

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 2
    Points : 4
    Points
    4
    Par défaut Optimisation requete avec sous-requetes multiples
    Bonjour,

    Voila la requete ci-dessous me donne, après verif, des resultats cohérents.
    Malheureusement elle dure 30 secondes ou +. Et ca c pas bon.
    Bref j'aimerais savoir comment l'optimiser.

    select A.agent_id,S.MAXI,T.MAXI,U.MAXI,V.MAXI,W.MAXI,X.MAXI
    FROM agent A,
    (SELECT agent_id,SUM(commande_prix) MAXI
    FROM agent
    LEFT JOIN commande ON (agent_id=commande_ori_agent_id)
    WHERE ( agent_id!="" )
    GROUP BY 1 ) S,
    (SELECT agent_id,SUM(affaire_ca_realise) MAXI
    FROM agent
    LEFT JOIN affaire ON (agent_id=affaire_agent_affect)
    WHERE ( agent_id!="" )
    GROUP BY 1 ) T,
    (SELECT agent_id,SUM(action_rdv_ca) MAXI
    FROM agent
    LEFT JOIN action_rdv ON (agent_id=action_rdv_agent_affect)
    WHERE ( agent_id!="" )
    GROUP BY 1 ) U,
    (SELECT agent_id,COUNT(DISTINCT commande_id) MAXI
    FROM agent
    LEFT JOIN commande ON (agent_id=commande_ori_agent_id)
    WHERE ( agent_id!="" )
    GROUP BY 1 ) V,
    (SELECT agent_id,COUNT(DISTINCT affaire_id) MAXI
    FROM agent
    LEFT JOIN affaire ON (agent_id=affaire_agent_affect)
    WHERE ( agent_id!="" )
    GROUP BY 1 ) W,
    (SELECT agent_id,COUNT(DISTINCT action_rdv_id) MAXI
    FROM agent
    LEFT JOIN action_rdv ON (agent_id=action_rdv_agent_affect)
    WHERE ( agent_id!="" )
    GROUP BY 1 ) X
    WHERE A.agent_id=U.agent_id AND A.agent_id=T.agent_id
    AND A.agent_id=V.agent_id AND A.agent_id=W.agent_id
    AND A.agent_id=X.agent_id AND A.agent_id=S.agent_id
    order by 1

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 919
    Points : 6 035
    Points
    6 035
    Par défaut


    T'as du mérite à avoir vérifié les résultats

    Une idée comme ça: pourquoi ne pas déporter les
    dans le WHERE final ?

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 414
    Points : 671
    Points
    671
    Par défaut
    fais un explain sur ta requete et tu verras ou ca coince.

  4. #4
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 145
    Points : 180
    Points
    180
    Par défaut
    :
    de plus y a t'il un réel intêret à faire une jointure externe si tu exclu les agents non renseigné avec

    d'ailleurs ne devrais-tu pas faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE ( agent_id!="" OR agent_id!=NULL)

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

Discussions similaires

  1. Requete avec sous requete tourne sans fin
    Par Invité dans le forum Requêtes
    Réponses: 5
    Dernier message: 02/09/2010, 11h45
  2. Sous requete de sous requete..(trop long)
    Par Thesum dans le forum Langage SQL
    Réponses: 3
    Dernier message: 09/10/2008, 10h12
  3. probleme avec requete et sous-requete...
    Par birkoss dans le forum Langage SQL
    Réponses: 5
    Dernier message: 17/08/2005, 21h26
  4. [UPDATE]Sous-requetes avec plusieurs nuplets
    Par Tchinkatchuk dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/07/2005, 18h28
  5. INTERBASE: DELETE avec sous requete conditionnelle
    Par Papino dans le forum InterBase
    Réponses: 6
    Dernier message: 17/02/2005, 22h55

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