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

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 14
    Points : 17
    Points
    17
    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é
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    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.

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 48
    Points : 54
    Points
    54
    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 à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 14
    Points : 17
    Points
    17
    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