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 3.23] Rediriger résultat d'une requete dans une table temporaire


Sujet :

Langage SQL

  1. #1
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut [MySQL 3.23] Rediriger résultat d'une requete dans une table temporaire
    Bonjour à tous,
    Je vous explique mon souci. Je travaille sur une Base contenant des tables avec chacunes ayant des millions de lignes de données. Je dois faire des jointures sur ces différentes tables. Mais le souci est que si je fais tout cela en une seule requete, le temps de réalisation de la requete est extrement long. J'aurai voulu faire mes jointures l'une après l'autre. C'est à dire d'abord faire une jointure entre deux tables puis stocker ce résultat dans une table temporaire, puis joindre cette table temporaire avec une autre table et stocker le résultat dans une autre table temporaire et ainsi de suite pour qu'à la fin j'ai une table définitive contenant les données dont j'ai besoin. Alors, à votre avis, est-ce possible ? Merci de votre aide
    Je travail avec Mysql

  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
    Oui, c'est possible.

    La syntaxe suivante permet sans doute de faciliter le codage d'une telle solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO maTableTemp (Champ1, Champ2, ...)
    (SELECT Champ1bis, Champ2bis FROM ...)
    Mais avant de vous orienter vers une telle "usine à gaz", avez-vous essayé d'améliorer votre requête, soit avec des conseils d'optimisation de SQLPro que vous trouverez dans ses articles sur ce site, soit avec des index créés judicieusement sur les champs servant aux jointures, etc .

  3. #3
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut
    J'ai rajouter des index dans mes tables. Mais le souci c'est qu'il faut que je croise 5 tables entre elles et chacunes de ces tables contiennent environ 2 millions de lignes chacunes. Donc le temp de traitement est assez long. Je vais essayer la méthode avec le INSERT INTO, mais je travail sous mysql 3.23, va t-il comprendre la requete ?

  4. #4
    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,

    Citation Envoyé par griese
    Je vais essayer la méthode avec le INSERT INTO, mais je travail sous mysql 3.23, va t-il comprendre la requete ?
    Le plus simple serait que tu essayes, la version que tu utilises doit être peu répandue maintenant.

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Analyse ta requête avec "explain select" pour voir si toutes tes jointures utilisent bien tes indexes.

  6. #6
    Membre actif Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Points : 281
    Points
    281
    Par défaut
    pour utiliser le explain select, je remplace le select par le explain select dans ma requete ?

  7. #7
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Oui c'est ça. Pour la documentation sur la commande et ce qu'elle retourne, c'est ici :

    http://dev.mysql.com/doc/refman/5.0/fr/explain.html

    Au pire tu peux poster le résultat de la commande ici et une âme charitable t'aidera à déchiffrer.

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/10/2011, 17h15
  2. [MySQL] une requete dans une requete
    Par ots2 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 31/08/2011, 09h49
  3. Réponses: 4
    Dernier message: 02/07/2008, 11h32
  4. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  5. Utilisation d'une requete dans une requete update
    Par hellbilly dans le forum Access
    Réponses: 4
    Dernier message: 09/01/2005, 15h09

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