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

SQL Oracle Discussion :

Optimisation Requête SQL


Sujet :

SQL Oracle

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 10
    Par défaut Optimisation Requête SQL
    Bonjour à tous,

    Débutant en SQL, je cherche à optimiser la requête suivante qui a un temps de traitement plutôt long :

    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
    18
    19
    20
    21
    22
     
    select distinct GET_QTE_CDE(a.id_art, cde.id_cde, 1) as "qte_cde", GET_QTE_CDE(a.id_art, cde.id_cde, 2) as "qte_prep", GET_QTE_CDE(a.id_art, cde.id_cde, 3) as "Qte_commandé", cde.id_cde, cde.zone_1 as "ref_client", cde.id_clt, clt.no_siret, clt.code_clt, cde.id_tpt,  a.code_art, 
    a.libelle_art, a.ref_fournisseur, cde.commt, cde.ref_client, cde.ZONE_2 "Nom_OP", cde.ZONE_3 "Prenom_Op", cde.ZONE_4 "Code_Service", tpt.libelle_tpt, GET_COMMT_LGN_CDE(lc.id_cde, lc.id_art) "commt art",
    lp.id_lot, lp.date_dlv, lp.qte_prlv, cde.n_cde, cde.date_expedition, calcul_poids_op(:1) as "poids", calcul_nb_colis_op(:1) as "Nb_COLIS",
    al.civilite, al.adresse1, al.adresse2, al.adresse3, al.prenom_individu, al.nom_individu, al.raison_sociale, al.cp, al.ville, al.pays, al.code_Pays, al.TEL1, al.FAX, lp.no_lot,
    TO_CHAR(NVL(o.DATE_EXPEDITION,sysdate),'DD') Jour, TO_CHAR(NVL(o.Date_expedition,sysdate),'MM') Mois
    from article a, lgn_cde lc, op_cde oc, lgn_op lo, op o, commande cde, client clt, adresse al, transporteur tpt,
    (Select lp.date_dlv, sum(lp.qte_prlv) as qte_prlv, lp.id_lot, lp.id_art, lp.id_op, l.no_lot from lgn_prlv lp, lot l where l.id_lot = lp.id_lot and lp.id_lot <> '-1' group by lp.id_art, lp.date_dlv, lp.id_lot, lp.id_op, l.no_lot
    Union
    Select lp.date_dlv, null, lp.id_lot, lp.id_art, lp.id_op, 'sans lot' from lgn_prlv lp where lp.id_lot = '-1' ) lp
    WHERE lc.ID_CDE = cde.ID_CDE
    AND lc.ID_ART = a.ID_ART 
    AND lc.ID_LGN_CDE = oc.ID_LGN_CDE(+)
    AND oc.ID_LGN_OP = lo.ID_LGN_OP(+)
    AND lo.ID_OP = o.ID_OP(+)
    AND cde.ID_CDE = (SELECT DISTINCT ID_CDE FROM OP_CDE ocde, LGN_OP lop WHERE ocde.ID_LGN_OP = lop.ID_LGN_OP AND lop.ID_OP = :1)
    and clt.id_clt = cde.id_clt
    and al.id_adresse = cde.id_adr_livr
    and tpt.id_tpt = cde.id_tpt
    and lp.id_op(+) = lo.id_op
    and lp.id_art(+) = lo.id_art 
    order by code_art;

    J'ai créé quelques indexes (notamment pour le "GROUP BY" avant le "UNION"...). Mais le résultat n'est pas encore terrible.

    Je joins en PJ le Explain Plan, que je ne suis pas sûr de bien décrypter.

    J'ai l'impression que le UNION de deux select est gourmand, ce qui m'étonne c'est qu'il y a 10 jours en arrière cette requête n'était pas aussi lente, alors qu'il n'y à pas eu de changements...

    Si l'un d'entre vous aurait une idée pour améliorer le temps de traitement de cette requête, je lui en serait très reconnaissant.


    Damien


    Merci
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. Optimisation requête SQL
    Par ludo00002 dans le forum SQL
    Réponses: 2
    Dernier message: 06/10/2008, 09h01
  2. Comment optimiser requête SQL avec création Index
    Par schumi101 dans le forum SQL
    Réponses: 25
    Dernier message: 11/12/2007, 21h28
  3. optimisation requête SQL
    Par marti dans le forum Oracle
    Réponses: 4
    Dernier message: 27/04/2006, 08h54
  4. Besoin d'aide pour optimiser requête SQL
    Par Keuf95 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 06/09/2005, 16h02
  5. optimisation requête SQL!!! help!!
    Par anathem62 dans le forum Requêtes
    Réponses: 2
    Dernier message: 24/05/2004, 16h26

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