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 :

temp de réponse trop long


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 40
    Points : 30
    Points
    30
    Par défaut temp de réponse trop long
    bonjour,
    Voila, j'utilise une requete avec une belle petite jointure externe(syntaxe supportée par oracle 8i), la requette fonctionne bien, le seul problème est que le temps de réponse est trop élevé. Je ne suis pas un expert des jointures et si quelqu'un sait comment améliorer les temps de réponse....
    Par avance merci, voici ma requette
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    select S.LOC_0, S.ITMREF_0, S.LOT_0, S.QTYSTU_0, SUM(NVL(Y.QTY_0,0)) 
    from YCBRECEPT Y, STOJOU S 
    where Y.VCRNUM_0(+)=S.VCRNUM_0 
          AND Y.VCRLIN_0(+)=S.VCRLIN_0 
          AND Y.LOC_0(+)=S.LOC_0 
          AND Y.ITMREF_0(+)=S.ITMREF_0 
          AND Y.LOT_0(+)=S.LOT_0 
          AND S.VCRNUM_0='xxyyzz112233' 
          AND S.VCRLIN_0=123456 
          AND S.ITMREF_0='truc' 
          AND S.LOT_0='chose' 
          AND S.STA_0='Q' 
    GROUP BY S.LOC_0, S.ITMREF_0, S.LOT_0, S.QTYSTU_0 
    HAVING S.QTYSTU_0 >SUM(NVL(Y.QTY_0,0))
    Je ne peux pas utiliser le left outer join car non supporté par la 8i de mon client.

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Histoire de gagner des ms le NVL est inutile dans un SUM.

    Sinon, il faudrait l'explain plan, la liste de tes index...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 40
    Points : 30
    Points
    30
    Par défaut
    Dans mon cas le nvl est nécéssaire car sinon il ne me renvoie aucune ligne s'il n'y a pas d'enregistrements correspondant dans YCBRECEPT et donc je ne récupère pas les valeurs de stojou.
    Par contre pour les index, je suis en train de voir avec le développeur coté ERP pour qu'il améliore les index. Merci beaucoup, je n'y avais pas pensé (pire qu'un newbee).

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 40
    Points : 30
    Points
    30
    Par défaut
    On viens de modifier les index des tables
    Sur ycbrecept et STOJOU:
    index: VCRTYP_0 + VCRNUM_0+VCRLIN_0 avec homonymes
    en modifiant la requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    select S.LOC_0, S.ITMREF_0, S.LOT_0, S.QTYSTU_0, SUM(NVL(Y.QTY_0,0)) 
    from YCBRECEPT Y, STOJOU S 
    where Y.VCRTYP _0(+)=S.VCRTYP _0 AND Y.VCRNUM_0(+)=S.VCRNUM_0 AND Y.VCRLIN_0(+)=S.VCRLIN_0 
          AND S.VCRTYP_0=6 
          AND S.VCRNUM_0='LFSPR050001226' 
          AND S.VCRLIN_0=1000 
          AND S.ITMREF_0='17246473400' 
          AND S.LOT_0='00XXXXX210605' 
          AND S.STA_0='Q' 
          AND Y.LOC_0(+)=S.LOC_0 
          AND Y.ITMREF_0(+)=S.ITMREF_0 
          AND Y.LOT_0(+)=S.LOT_0 
    GROUP BY S.LOC_0, S.ITMREF_0, S.LOT_0, S.QTYSTU_0
    HAVING S.QTYSTU_0 >SUM(Y.QTY_0);
    L'ordre des éléments dans la requette est-il important?
    Quels index seraient utiles?
    Par avance merci pour votre aide.

  5. #5
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    Citation Envoyé par maxidoove
    L'ordre des éléments dans la requette est-il important?
    Quels index seraient utiles?
    Pas en mode CBO (calcul des statistiques) qui est conseillé

    index : ça dépend de la sélectivité de ceux-ci

    a priori :S.VCRTYP_0,S.VCRNUM_0,S.VCRLIN_0 parait pas mal

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 40
    Points : 30
    Points
    30
    Par défaut
    Pas en mode CBO (calcul des statistiques) qui est conseillé

    index : ça dépend de la sélectivité de ceux-ci
    Pour le mode CBO, je ne pense pas que l'on ai la main dessus. La base Oracle est celle d'un ERP donc je ne sais pas si on peut faire cette modif.
    Connaissez vous une solution qui permettrai d'améliorer le temps de réponse, j'arrive a 15 secondes (donc les utilisateurs vont s'arracher les cheveux et je vais culpabiliser d'etre responsable d'une calvitie généralisée chez mon client).
    Pensez vous qu'en rajoutant ITMREF_0+LOT_0+STA_0 sur l'index VCRTYP_0 + VCRNUM_0+VCRLIN_0 on puisse améliorer un peu?
    Je ne pense pas que ce soit YCBRECEPT qui pose problème car il n'y a quasiment rien dedans.
    Par avance merci pour votre aide.
    Les cheveux des employés de mon client vous en remercieront .

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 40
    Points : 30
    Points
    30
    Par défaut
    J'ai changé les index moi-même c'est nickel, je suis passé de 15 secondes a 0,5
    merci @+

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

Discussions similaires

  1. Temps de réponse trop long
    Par LALACOM dans le forum Oracle
    Réponses: 11
    Dernier message: 03/10/2011, 17h37
  2. Réponses: 9
    Dernier message: 02/10/2010, 12h43
  3. temps de réponse trop long
    Par hammag dans le forum SQL
    Réponses: 7
    Dernier message: 11/05/2010, 13h00
  4. [MySQL] Problème temps d'éxécution trop long
    Par Yo. dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 13/06/2006, 14h55
  5. Arrêter un prog si temps de connexion trop long
    Par jakouz dans le forum Langage
    Réponses: 4
    Dernier message: 22/10/2002, 18h28

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