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

DB2 Discussion :

pb SQL DB2/400


Sujet :

DB2

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif
    Avatar de skywaukers
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2005
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 219
    Par défaut pb SQL DB2/400
    Bonjour,

    J'ai des gros soucis de temps de réponse sur une requète SQL AS400 :
    j'ai une grosse table (env 4500000 enregistrements) sur laquelle je souhaite faire un update. J'ai créé le chemin d'accès qui convient.
    Si je fais un Select * from matable where macondition, la réponse est instantanée.
    Maintenant si je fais un update monchamp='MaValeur' where macondition, la requète dure 5 minutes pour modifier 1 seul enregistrement, et il semble passer tous les enregistrements en revu, comme si il ignorait le chemin d'acces..
    Quelqu'un pourrait me dire ce que j'ai pu oublier de faire pour qu'il se comporte ainsi ?

    Merci de votre attention.
    Dany

  2. #2
    Membre Expert
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Par défaut
    Citation Envoyé par skywaukers Voir le message
    .... J'ai créé le chemin d'accès qui convient.
    Si je fais un Select * from matable where macondition, la réponse est instantanée.
    Maintenant si je fais un update monchamp='MaValeur' where macondition, la requète dure 5 minutes pour modifier 1 seul enregistrement, et il semble passer tous les enregistrements en revu, comme si il ignorait le chemin d'acces..
    ...
    Bonjour.

    Je ne suis pas sûr de la réponse mais on sait jamais. Ton chemin d'accès sera ignoré s'il s'agit d'un LF créé par des DDS. Il faut le faire par un CREATE INDEX.

  3. #3
    Membre extrêmement actif
    Avatar de skywaukers
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2005
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 219
    Par défaut
    Bonjour, et merci.

    En fait j'ai trouvé une solution. Mon logique avait comme clé le code article + trois autres champs permettant d'obtenir une clé unique, l'accès se faisant uniquement par le code article (je veux modifier tous les enregistrements concernant cet article).
    J'ai donc remplacé ce logique par un autre qui a seulement le code article comme clé, non unique bien entendu. Et avec ce logique là les temps de réponses sont corrects (3sec au lieu de 5 minutes)...
    Par contre je ne m'explique pas trop pourquoi, car dans la mesure où le code article était la clé principale dans mon premier logique, pour moi il n'y a pas de raison qu'il n'alle pas aussi vite.

    Merci encore,
    Dany

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Par défaut
    Va dans iSeries Navigator>DataBase>NomDeTaBDD>Index Advisor,
    trie sur le "short name" et positionne-toi sur le fichier en question par défilement. Tu y verras ce que l'optimiseur recommande la création d'index dans la colonne "Keys Advised". Crée-les comme il te le signale et tu verras la différence en matière de temps de traitement.

    Au passage, ne jamais employer un logique sur une instruction SQL, emploie toujours un physique ou une table SQL et crée les index comme je viens de le dire.

  5. #5
    Membre extrêmement actif
    Avatar de skywaukers
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2005
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 219
    Par défaut
    bonjour,

    merci pour ta contribution. En fait je ne précise jamais les index dans mes requètes SQL.
    Par contre on utilise encore beaucoup l'AS400 en mode natif ici (on a encore des dev Adelia), donc je pense que ça va pas plaire à tous le monde si je ne fais pas les dds de mes index.

    Par contre je vais regarder dans operation navigator.

    Merci,
    Dany

Discussions similaires

  1. SSIS Transfert caractères chinois SQL Server => DB2/400
    Par guillaume_85 dans le forum SSIS
    Réponses: 4
    Dernier message: 07/03/2012, 16h51
  2. Erreur SQL DB2 400
    Par BBert dans le forum AS/400
    Réponses: 5
    Dernier message: 04/05/2009, 10h43
  3. Augmenter STMTHEAP sur DB2/400
    Par hatoug dans le forum DB2
    Réponses: 7
    Dernier message: 29/08/2007, 17h16
  4. Question sur index DB2 400
    Par Jibon dans le forum DB2
    Réponses: 4
    Dernier message: 19/08/2007, 17h58
  5. Réponses: 6
    Dernier message: 15/12/2005, 15h29

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