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

Langage SQL Discussion :

[Mysql] Grouper des données dans 2 tables différentes


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 14
    Par défaut [Mysql] Grouper des données dans 2 tables différentes
    Bonjour,

    Mon problème est le suivant:

    J'ai 2 tables dont les champs sont identiques visit et visit_arch (archive). Chaque table contient environ 600000 enregistrements.

    Leurs champs sont les suivants:
    agence-valeur

    Ce que j'aimerai obtenir est le nombre de visit par agence, donc pour une table cela donne:

    SELECT agence, count(*)
    FROM visit
    GROUP BY agence

    Temps de réponse 2sec

    Pour avoir la somme des 2 tables j'ai fait la requête suivante qui lance la somme pour chaque agence:

    SELECT ag,
    ((SELECT count(*) from visit where agence= ag)+(SELECT count(*) from visit_arch where agence = ag))
    FROM agency

    Temps de réponse 500sec

    Y aurait-il un moyen pour avoir le même résultat avec de meilleurs performances ?

    Merci d'avance pour votre aide

  2. #2
    Xo
    Xo est déconnecté
    Membre Expert
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Par défaut
    Salut,

    Avec un UNION dans ta première requête, et un SELECT COUNT dessus, ça devrait fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT ag, COUNT(*)
      FROM
          (
          SELECT [Mes Champs]
            FROM Visit V INNER JOIN  agence A ON V.ag = A.ag
          UNION
          SELECT [Mes Champs]
            FROM Visit_Arch VA INNER JOIN  agence A ON VA.ag = A.ag
          )
      GROUP BY ag
    Par contre, pour les perfs, je ne sais pas si ça va améliorer.
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 48
    Par défaut
    Bonjour,

    Une petite création d'index sur le champ agence sur les table visit_arch et visit devrait améliorer la performance de la requête.

    A+

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 14
    Par défaut
    Merci Xo pour ton aide précieuse, c'est exactement de que je cherchais.

    Merci aussi à toi LoveBuzz pour ta remarque cela me servira pour d'autres extractions un peu longues.


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

Discussions similaires

  1. Insérer des données de Jtable dans une table
    Par mimati dans le forum Général Java
    Réponses: 0
    Dernier message: 15/11/2013, 18h18
  2. [MySQL] Affichage tirage au sort des données puis copiage dans une table
    Par legrandse dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 04/02/2012, 13h04
  3. Réponses: 3
    Dernier message: 07/04/2010, 18h27
  4. [VBA-E]Transfere des données d'Excel dans une table Access
    Par flo83 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 07/04/2006, 09h22
  5. traitement des données avant envoie dans MySQL
    Par italiasky dans le forum SQL Procédural
    Réponses: 13
    Dernier message: 07/02/2006, 22h50

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