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

Oracle Discussion :

optimisation requête avec jointures externes


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 15
    Par défaut optimisation requête avec jointures externes
    Bonjour je travaille sur une evo d'une requête ayant des jointures externes. Je ne peux les enlever parce que les utilisateurs ont besoin des infos envoyer grâce à ces jointures. Lorsque je lance la nouvelle requête elle met énormément de temps (après 3h pas de réponses). Avez vous un moyen de l'optimiser? le "where" de ma requête est:

    where T1."KSESSION"=T2."KSESSION"(+) and T1."KSTAGE"=T2."KSTAGE"(+) and T1."KSESSION"=T4."KSESSION"(+) and T1."KSTAGE"=T4."KSTAGE"(+)
    and T4."KSOC"=T5."KSOC"(+) and T4."NMAT"=T5."NMAT"(+) and T4."KUOSAL"=T6."KUO"(+) and T4."KSESSION"=T7."KSESSION"(+) and T4."KSTAGE"=T7."KSTAGE"(+)
    and T4."NMAT"=T7."NMAT"(+) and T1."EASSUR"=T3."EASSUR" and T1."KUOGES"=T8."KUOGES" and T4."KUOSAL"=T9."KUOSAL"
    and T1."DDEBSES">=to_date('1930-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS') and T1."DFINSES"<=to_date('2999-12-31 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
    and T1."KSTAGE" like '%' and T8."APERIMCSP"='CSP' and T9."APERIMCSP"='CSP'
    order by T1."KUOGES" asc, T1."KSTAGE" asc, T1."KSESSION" asc
    En rouge je vous ai mis les nouvelles tables que j'ai créé.

    Merci d'avance

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut


    Essaye de supprimer l'ORDER BY. Quel est le plan d'exécution (recherche explain plan) ? Y a-t-il des indexes ?

  3. #3
    Membre Expert
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Par défaut
    C'est marrant ça une requête qui commence par "where"....

    - Assure toi que les stats sont bien passées

    - si oui, il faut absoluement editer le plan d'exécution de la requête c'est par là que tout commence....

  4. #4
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 15
    Par défaut
    Tout dabord je vous remercie pour m'avoir répondu aussi rapidement.

    J'ai des indexes sur toutes les tables et toutes les colonnes me servant pour les jointures. J'ai regardé l'explain plan et j'ai les tables T1, T4 et une table qui est utilisée pour créer T8 et T9 qui sont en access full.
    Je précise que les tables T8 et T9 sont des vues qui sont créées à partir de plusieurs tables. J'ai aussi enlever le order by. J'ai éssayé de créer plutôt des tables à la place des vues mais cela n'a rien changé, la requête est toujours aussi longue à s'exécuter. Je vous met tout le script, il est assez long, c'est la raison pour laquelle tout à l'heure je n'ai mis que le where.

    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
    16
    17
     
    select T1."KSTAGE", T1."ASTAGEL", T1."KSESSION", T1."ASESSIONC", T1."KUOGES", T1."AUOGESC", 
    T1."AETATSESC", T1."DDEBSES", T1."DFINSES", T1."QHRESES", T1."QSMAXSES"-T1."QSINSSES", T1."QSINSSES", 
    T1."QSATTSES", T2."AORGL", T3."AASSUR", T4."NMAT", T4."ANOM", T4."KSEXE", T5."KMESSAG", T5."ALACC", 
    T5."ALIEUC", T4."KUOSAL", T4."AENTITEC", T6."KUO4", T6."AUOC4", T6."KUO3", T6."AUOC3", T4."KCLASS", T4."ACLASSC", 
    T4."KMETRATP", T4."AMETRATPC", T4."KPLAN", T4."EINEXSAL", T4."AETINSSESC", T4."DETINSSES", T4."QDURPRES", T4."IDPFS", 
    T4."IDIDFS", T4."IDDDS", T4."AFRATPC", T4."KOBJDEP", T4."AOBJDEP", T4."AOBJFIN", T4."AIMFS", T4."KPOINTA", T4."ECCNV", 
    T4."KDEMANDE", T4."ADEMANDEC", T4."DDEMANDE", T4."NMATID", T4."DVDFSES", T7."ATYPCOUC", T7."DEFFCOU", T7."QMONENGA", T7."KTYPCOU", 
    T7."QMONBRUT", T1."KETATSES", T7."NVENTIL", T7."NIMPUTA", T4."IDSTR"
    from "INFO"."FASSUR" T3, "INFO"."V_UOGES_CSPENT" T8, "INFO"."V_UOSAL_CSPENT" T9, "FSESSION" T1, "FORGSESS" T2, 
    "FPARSESS" T4, "INFO"."FAGENTS" T5, "TUOH" T6, "FCOUSAL" T7
    where T1."KSESSION"=T2."KSESSION"(+) and T1."KSTAGE"=T2."KSTAGE"(+) and T1."KSESSION"=T4."KSESSION"(+) and T1."KSTAGE"=T4."KSTAGE"(+) 
    and T4."KSOC"=T5."KSOC"(+) and T4."NMAT"=T5."NMAT"(+) and T4."KUOSAL"=T6."KUO"(+) and T4."KSESSION"=T7."KSESSION" and T4."KSTAGE"=T7."KSTAGE" 
    and T4."NMAT"=T7."NMAT" and T1."EASSUR"=T3."EASSUR" and T1."KUOGES"=T8."KUOGES" and T4."KUOSAL"=T9."KUOSAL" 
    and T1."DDEBSES">=to_date('1930-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS') and T1."DFINSES"<=to_date('2999-12-31 00:00:00', 'YYYY-MM-DD HH24:MI:SS') 
    and T1."KSTAGE" like '%' and T8."APERIMCSP"='CSP' and T9."APERIMCSP"='CSP'
    order by T1."KUOGES" asc, T1."KSTAGE" asc, T1."KSESSION" asc

  5. #5
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 15
    Par défaut Explain plain
    Je vous met aussi l'explain plain si cela peut vous aider à comprendre, merci:
    Operation Object Name Rows Bytes Cost Object Node In/Out PStart PStop

    SELECT STATEMENT Optimizer Mode=CHOOSE
    SORT ORDER BY
    MERGE JOIN
    SORT JOIN
    MERGE JOIN
    SORT JOIN
    NESTED LOOPS OUTER
    NESTED LOOPS OUTER
    NESTED LOOPS OUTER
    FILTER
    NESTED LOOPS OUTER
    NESTED LOOPS
    NESTED LOOPS
    TABLE ACCESS FULL INFO.FCOUSAL
    TABLE ACCESS BY INDEX ROWID INFO.FSESSION
    INDEX RANGE SCAN INFO.FSESSION_I04
    TABLE ACCESS BY INDEX ROWID INFO.FASSUR
    INDEX UNIQUE SCAN INFO.PK_FASSUR
    TABLE ACCESS BY INDEX ROWID INFO.FPARSESS
    INDEX RANGE SCAN INFO.FPARSESS_I02
    TABLE ACCESS BY INDEX ROWID INFO.TUOH
    INDEX UNIQUE SCAN INFO.PK_TUOH
    TABLE ACCESS BY INDEX ROWID INFO.FAGENTS
    INDEX UNIQUE SCAN INFO.PK_FAGENTS
    TABLE ACCESS BY INDEX ROWID INFO.FORGSESS
    INDEX RANGE SCAN INFO.FORGSESS_I01
    SORT JOIN
    VIEW INFO.V_UOSAL_CSPENT
    SORT UNIQUE
    UNION-ALL
    FILTER
    TABLE ACCESS FULL INFO.FPARSESS
    NESTED LOOPS
    TABLE ACCESS FULL INFO.TUO_CSP
    TABLE ACCESS BY INDEX ROWID INFO.TUOH
    INDEX RANGE SCAN INFO.TUOH_I18
    SORT JOIN
    VIEW INFO.V_UOGES_CSPENT
    SORT UNIQUE
    UNION-ALL
    FILTER
    TABLE ACCESS FULL INFO.FSESSION
    TABLE ACCESS FULL INFO.TUO_CSP
    NESTED LOOPS
    TABLE ACCESS FULL INFO.TUO_CSP
    TABLE ACCESS BY INDEX ROWID INFO.TUO
    INDEX RANGE SCAN INFO.TUO_I01

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Pour la deuxiéme fois, merci de respecter les régles du forum.

    Merci aux autres d'attendre que beurtom ait édité ses messages avant de répondre

  7. #7
    Membre Expert
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Par défaut
    Citation Envoyé par Fred_D
    Merci aux autres d'attendre que beurtom ait édité ses messages avant de répondre
    Désolé j'ai répondu trop vite... mais promis ça se reproduira plus

  8. #8
    Membre Expert
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Par défaut
    - As tu passé les stats sur ton schéma (on ne voit rien apparaitre dans l'explain plan) ?

    - Combien de lignes renvoi ta requêtes en gros ?

    - Si il y a très peu de lignes renvoyées par rapport au lignes des plus grosses tables, quel est le critère (ou l'ensemble de critères) le plus discriminant ?

    - Si ta requête s'est mise à ètre longue quand tu as rajouté des vues, il est très important d'avoir la définitions de ces vues en question.

Discussions similaires

  1. Optimisation requête avec jointure externe SQL Server
    Par ICEMAN_60 dans le forum Développement
    Réponses: 2
    Dernier message: 28/11/2011, 10h08
  2. Requête avec jointure externe complexe
    Par dpin33 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 04/03/2008, 13h41
  3. [SQL 2000] Optimisation requête avec jointure multiple
    Par zooffy dans le forum Développement
    Réponses: 5
    Dernier message: 18/09/2007, 15h38
  4. requête avec jointure externe
    Par GMI3 dans le forum Oracle
    Réponses: 8
    Dernier message: 12/04/2006, 10h29
  5. Requête avec jointure externe
    Par claralavraie dans le forum Langage SQL
    Réponses: 8
    Dernier message: 02/02/2006, 08h34

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