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 :

[MySQL server 5.4]Update d'une table


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Yolak
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 341
    Par défaut [MySQL server 5.4]Update d'une table
    Bonjour,

    Voici mon pb:

    J'ai deux tables, la première ressemble à ça (TABLE A):



    Et la seconde (TABLE B):


    Je souhaiterais intégrer les NOM PDG de la table B dans la TABLE A tout en sachant que je ne trouverais pas forcement de concordances: par exemple, pour la ligne ASSOCIATION DE... dans la table A, il n'y a pas de numéro correspondant dans la TABLE B. Le champ NOM PDG dans la table A sera donc NULL.

    Mon autre problème, c'est que la table A contient plus de 3millions d'enregistrements et la table B en contient près de 1,5 millions. Il faudrait que la requête ne dure pas 3 semaines.

    J'ai essayé ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE table_A SET table_A.NOMPDG=table_B.NOMPDG WHERE table_A.TEL=table_B.TEL;
    Mais c'est archi long! ça fait plus de deux heures que j'ai lancé la requête et je ne suis même pas sûr que ça marche.

    J'utilise MySQL en local, aucune connexion extérieure.

    Ma question est: comment feriez-vous ?

    Merci pour votre aide!

  2. #2
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 64
    Par défaut
    Hola,
    alors là c'est clair que pour accélérer ta requête il te faut deux choses:
    uno: passer les deux champs de correspondance (tel) en numérique
    dos: insérer un index, qui va permettre à mysql d'accéder plus rapidos aux enregistrement
    tres: tu relance ton update et tu m'en diras des nouvelles

  3. #3
    Membre éclairé Avatar de Yolak
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 341
    Par défaut
    ok d'accord, je pense que ça peut m'aider
    par contre, je suis plutôt nul en mysql,
    pourrais-tu me donner la synthaxe pour créer cet index stp ?
    Merci!

    EDIT: J'ai réussi a créer des index sur les colonnes TEL de mes tables avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE INDEX IDX_TEL ON TABLE_A(TEL)
    J'ai fait pareil pour la table_B.
    C'est ça ??


    EDIT2: Mes champs tél sont des VARCHAR... Si je les passe en numérique, je vais perdre le "0" devant non?

    EDIT3: En fait c'est pas grave, je saurai remettre le "0" après...
    Je viens de lancer la requête. J'attends...

  4. #4
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 64
    Par défaut
    pas beaucoup mieux que toi en mysql, j'ai rencontré le même pb il y a de cela quelques semaines seulement.

    Les index je les crée en allant sur l'onglet "structure" de la table dans phpmyadmin, puis en cliquant sut la petite icône avec une sorte d'éclair.
    Par contre à ma connaissance cela ne marchera qu'avec des champs numériques.

    tu verras ca vaut bien le sacrifice d'un zéro en premier caractère !

  5. #5
    Membre éclairé Avatar de Yolak
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 341
    Par défaut
    Bonjour et merci! Parce que ça a marché à merveille !
    J'ai donc transformé les deux champs des deux tables en INTEGER, puis j'ai refait mon UPDATE.
    Ensuite j'ai retransformé mes champs en VARCHAR et j'ai réjouté le 0 devant avec CONCAT('0',TEL)

    Durée du traitement du UPDATE : 21minutes !!!

    Voilà, voilà! Encore merci pour cette astuce vraiment efficace !
    Résolu

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

Discussions similaires

  1. [MySQL] Update d'une table dans la base des données mysql php
    Par glodybiss4 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 07/02/2012, 16h51
  2. [MySQL] update d'une table sous MySQl
    Par sniper_marra dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 17/08/2008, 23h27
  3. MySQL Administrator : modifier les données d'une table
    Par Robinounou dans le forum Outils
    Réponses: 4
    Dernier message: 13/07/2005, 17h21
  4. Update d'une table
    Par EssaiEncore dans le forum Langage SQL
    Réponses: 2
    Dernier message: 18/02/2005, 10h00
  5. UPDATE d'une table avec test d'un champ d'une autre table
    Par delphim dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/05/2004, 12h30

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