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 de requête


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut optimisation de requête
    Bonjour,

    est il possible de simplifier une requête telle que la suivante ?

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT A/B AS C, c1, c2, c3, c4, c5, c6 FROM
       (SELECT SUM(c1*c2) as A, SUM(c3) AS B, c1, c2, c3, c4, c5, c6 
        FROM uneTable) AS regroupement

    la double sélection des champs 1 à 6 est-elle optimisée par MySQL ?

    Merci

  2. #2
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    Je dirai que tu es en train de te faire berner par le côté laxiste de mysql. Dans la requete qui suivante, tu mélanges des colonnes agrégées et des colonnes non agrégées, c'est interdit sur tous les autres sgbd. Mysql l'autorise mais prévient que si les colonnes non agrégées ne sont pas constantes dans les groupes, le résultat est imprévisible.

    bon maintenant explain me dit que cette forme produit une table dérivée alors que l'autre, sans la sous requete non, toutefois une table dérivée qui contient une seule ligne ... (et dans tous les cas qui ne contiendra jamais qu'une seule ligne).

    si la question c'est est-ce que le calcul SUM() est mis en cache ou il faut truander comme tu le fais pour ne pas faire les sommes plusieurs fois de suite, je pense que oui, il y a cache, mais je n'ai aucun argument pour le justifier. J'en cherche aussi.

  3. #3
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Ok merci pour cette explication.
    Dans ce cas de figure, comment ferais tu la requête (sous MySQL) ?

  4. #4
    Membre Expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    Saluton,
    Nous manquons d'éléments pour lever l'incertitude rappelée par gene69 à savoir:
    si les colonnes non agrégées ne sont pas constantes dans les groupes, le résultat est imprévisible.
    d'autant qu'en l'absence de GROUP BY le regroupement va se faire sur l'ensemble des lignes de la table.
    La cohérence de cette requête n'apparaît pas démontrée a priori.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

Discussions similaires

  1. [Access] Optimisation performance requête - Index
    Par fdraven dans le forum Access
    Réponses: 11
    Dernier message: 12/08/2005, 14h30
  2. Optimisation de requête avec Tkprof
    Par stingrayjo dans le forum Oracle
    Réponses: 3
    Dernier message: 04/07/2005, 09h50
  3. Optimiser une requête SQL d'un moteur de recherche
    Par kibodio dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/03/2005, 20h55
  4. optimisation des requêtes
    Par yech dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 21/09/2004, 19h03
  5. Optimisation de requête
    Par olivierN dans le forum SQL
    Réponses: 10
    Dernier message: 16/12/2003, 10h09

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