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]Erreur EXPLAIN (UPDATE...)


Sujet :

Requêtes MySQL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut [MYSQL]Erreur EXPLAIN (UPDATE...)
    Bonjour à tous,
    J'ai une erreur de syntaxe lorsque je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    EXPLAIN(
    UPDATE commande cmd SET cmd.DATE_RECEPTION_DOC='050812' WHERE cmd.BGM='0293815'
    )
    En revanche, la requête en elle-même:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UPDATE commande cmd SET cmd.DATE_RECEPTION_DOC='050812' WHERE cmd.BGM='0293815'
    fonctionne !!

    Pour quelle raison ai-je c emessage d'erreur ?

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 919
    Points : 6 035
    Points
    6 035
    Par défaut
    EXPLAIN n'est valable que pour le SELECT
    (http://dev.mysql.com/doc/refman/5.0/fr/explain.html)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut
    A quel dommage
    Je n'ai pas de moyen de savoir si ma requête update est optimisée ?
    Je veux dire, je fais une requête update d'1 champs de ma table, (le champs DATE_RECEPTION_DOC (qui porte un index)).Je fais cet update sur 20000 enregistrments environ, et c'est très long !!!!
    1000 updates en 1 minute environ .... Je me donc demandais s'il y avait pas un souci ....

  4. #4
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 145
    Points : 180
    Points
    180
    Par défaut
    Bonjour,

    c'est justement ton index qui fait que c'est long!
    tu peux toujours faire un DROP INDEX, faire ton UPDATE, puis refaire un CREATE INDEX.

    Ce sera surement beaucoup plus rapide.

    HTH,

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut
    D'accord merci !!
    Je débute et c'est vrai que j'vais lu dans la faq que l'index n'était pas approprié pour des requêtes d'insertions. Pour l'update, ça doit être la même chose.
    Je vais donc faire ce que tu m'a dit: drop index et le remettre après les updates.
    Merci pour les informations.

    Bonne fin de matinée.

  6. #6
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 919
    Points : 6 035
    Points
    6 035
    Par défaut
    Pour améliorer la perf de cette requète, c'est le champ BGM qui devrait être indexé.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut
    Après la suppression des index, ça paraît toujours aussi long.
    Tant pis. Je le serai quand même pour plus tard.
    Bonne journée.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut
    Oui BGM est indexé aussi par contre.

  9. #9
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 145
    Points : 180
    Points
    180
    Par défaut
    Ton update, c'est un traitement batch ?

  10. #10
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    A la rigueur tu peux transformer ta commande en SELECT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM commande WHERE BGM='0293815'
    pour voir si un index est utilisé...

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut
    la rigueur tu peux transformer ta commande en SELECT
    A ouais d'accord, je vois la différence !! , j'étais sur d'avoir mis un index sur BGM, mais ce n'était pas le cas.
    Après modification, la requête sur les 20000 enregitrement a mis moins de 5 secondes(INDEX sur BGM, pas d'index sur DATE_RECEPTION_DOC)

    Je ne suis qu'un idiot !!!

    Ton update, c'est un traitement batch ?
    Oui c'est un traitement batch

    Donc merci beaucoup pour votre aide précieuse !!!!
    Je passe d'1/2 heure, à 5 secondes !!!! Y a pas à dire, l'index c'est la grâce de dieu !!!

    PS: Pour le test, j'ai refait l'update en laissant l'index sur DATE_RECEPTION_DOC, et je ne perd pas trop de temps. 1 seconde de plus tout au plus.


    Encore merci pour votre aide !!!!

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

Discussions similaires

  1. [MySql Vb.net] Update sur la base > retourne erreur
    Par Roken62 dans le forum Windows Forms
    Réponses: 0
    Dernier message: 14/01/2009, 10h02
  2. [MySQL] Erreur sur une instruction UPDATE
    Par Sir Tengu dans le forum Langage SQL
    Réponses: 3
    Dernier message: 24/12/2006, 13h59
  3. Erreur instruction "UPDATE"
    Par Mathouxxx dans le forum Langage SQL
    Réponses: 7
    Dernier message: 29/07/2004, 14h02
  4. DBExpress, Delphi 6 et MySQL : Erreur DBX
    Par BoBoToTo dans le forum Bases de données
    Réponses: 10
    Dernier message: 11/05/2004, 11h06
  5. [debutante] erreur requete update
    Par LineLe dans le forum ASP
    Réponses: 5
    Dernier message: 12/09/2003, 13h05

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