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 :

pouvez vous m'aider a optimiser cette requete


Sujet :

SQL Oracle

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut pouvez vous m'aider a optimiser cette requete
    salut,
    j'ai cree une vue qui est un peu complexe, alors quand je fais un select * sur cette vue alors l'execution prend un temps, si vous pouvez m'aider a optimiser ma requette de creéation de vue!!(je demande vos conseil)
    voici ma vue:

    Code sql : 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    create or replace view AlARMS  as 
    (select distinct
        SYS.mst_perspective_id,
        SYS.meta_perspective_id,
        SYS.fst_perspective_id,
        SYS.snd_perspective_id,
        SYS.system,
        REF_SYS.description as system_desc,
        REF_SYS.system_a as system_a,
        REF_SYS.system_b as system_b,
        SYS.period_type as period_type,
        REF_PT.description as period_type_desc,
        ALRM.equation_id,
        decode(ALRM.period_type, 'DAILY', ALRM.period, ALRM.year || ALRM.period) as period,
        TO_NUMBER(ALRM.year) as YEAR,
        ALRM.run_id,
        decode(ALRM.run_id, '-1','', (select runs.mois_run from RAID_T_ADV_FAC_RUN runs where runs.date_emis = ALRM.period)) as mois_run,
        ALRM.alarm_id, ALRM.alarm_type as alarm_status, ALRM.status,
        ALRM.equation_type,
        ALRM.side_a , ALRM.side_b,ALRM.ecart, ALRM.ecart_perc,
        ALRM.severity,ALRM.criticity,
        ALRM.platform,
        ALRM_DET.term_id,
        ALRM_DET.term_value,
        EQ_FORM.description as equation_desc,
        EQ_FORM.short_desc as equation_formula,
        EQ_FORM.alarm_type as alarm_type,
        EQ_FORM.cra_type as cra_type,
        EQ_FORM.unite as unite,
        PERS_TERM.code_term as pers_code_term,
        PERS_TERM.term_desc as pers_term_desc,
        PERS_TERM.term_order as pers_term_order,
        PERS_TERM.term_desc_l1 as pers_term_desc_l1,
        PERS_TERM.term_desc_l2 as pers_term_desc_l2,
        PERS_TERM.col_span_l1 as pers_col_span_l1,
        PERS_TERM.col_span_l2 as pers_col_span_l2,
        PERS_MAX.term_nb,
        AGR_EQ.agregat_eq as agr_eq,
        ALRM.criticity || nvl(ALRM.greenvisible, '0') as greenvisible
    From
     
        RAID_T_ADV_SYSTEMS SYS,
        RAID_T_ADV_SYSTEMS_EQUATIONS SYS_EQ,
        RAID_T_ADV_REF_SYSTEMS REF_SYS,
        RAID_T_ADV_REF_PERIOD_TYPE REF_PT,
        RAID_T_RC_ALARMS ALRM,
        RAID_T_RC_ALARMS_DETAILS ALRM_DET,
        RAID_T_ADV_EQUATION_FORMULAS EQ_FORM,
        RAID_T_ADV_TERMS_INDICATEURS TERM_IND,
        RAID_T_ADV_PERSPECTIVES_TERMS PERS_TERM,
        RAID_T_ADV_AGREGAT_EQUATIONS AGR_EQ,
        (select perspective_id, max(term_order)+1 as term_nb
            from RAID_T_ADV_PERSPECTIVES_TERMS group by perspective_id) PERS_MAX
    where
        (SYS_EQ.system = SYS.system) AND
        (REF_SYS.system = SYS.system) AND
        (SYS.mst_perspective_id = PERS_TERM.perspective_id) AND
        (SYS.mst_perspective_id = PERS_MAX.perspective_id) AND
        (PERS_TERM.code_term = TERM_IND.code_term) AND
        (TERM_IND.code_indicateur = ALRM_DET.term_id) AND
        (REF_PT.period_type = SYS.period_type) AND
        (ALRM.alarm_type = 'CALC') AND
        (SYS_EQ.equation = ALRM.equation_id) AND
        (AGR_EQ.equation_id = ALRM.equation_id) AND
        (SYS.period_type = ALRM.period_type) AND
        (ALRM.period_type = ALRM_DET.period_type) AND
        (ALRM.platform = ALRM_DET.platform) AND
        (ALRM.period = ALRM_DET.period) AND
        (ALRM.year = ALRM_DET.year) AND
        (ALRM.equation_type = ALRM_DET.equation_type) AND
        (ALRM.equation_id = ALRM_DET.equation_id) AND
        (EQ_FORM.equation_id = ALRM_DET.equation_id) AND
        (EQ_FORM.period_type = ALRM_DET.period_type) AND
        (EQ_FORM.equation_type = ALRM_DET.equation_type)
    order by mst_perspective_id, period)


    merci bq!!

  2. #2
    Membre actif Avatar de Sceener
    Inscrit en
    Mai 2007
    Messages
    231
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 231
    Points : 228
    Points
    228
    Par défaut
    Pour les jointures , il n'y a pas d'autres issues je pense .

    Par contre

    la sous requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    (select perspective_id, max(term_order)+1 as term_nb
    from RAID_T_ADV_PERSPECTIVES_TERMS group by perspective_id) PERS_MAX
    tu pourras la mettre dans une vue .
    La sagesse des hommes ne tient pas à leur expérience, mais à leur aptitude à l'expérience.


  3. #3
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Je pense qu'au niveau requete, la création d'une vue ne change rien.
    C'est déjà une vue du point de vue optimiseur.

    Lorsque tu mets une vue dans une requete, C'est comme si oracle intégrait le script de la vue dans la requete.
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  4. #4
    Membre chevronné Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Points : 2 071
    Points
    2 071
    Par défaut
    Y a beaucoup de jointure, je trouve !
    Garuda गरूड
    Brahmâ la Guerre et Vishnu la Paix

    Oracle 12C R2 - Forms11GR2 - Toad 12 - sharePoint 2010

  5. #5
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Points : 1 197
    Points
    1 197
    Par défaut
    Salut,

    Une petite remarque.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    RAID_T_ADV_PERSPECTIVES_TERMS PERS_TERM,
        RAID_T_ADV_AGREGAT_EQUATIONS AGR_EQ,
        (SELECT perspective_id, max(term_order)+1 AS term_nb
            FROM RAID_T_ADV_PERSPECTIVES_TERMS GROUP BY perspective_id) PERS_MAX
    Utilises à la place la fonction analytique MAX, ça t'évite de faire deux fois le même traitement sur la même table RAID_T_ADV_PERSPECTIVES_TERMS

Discussions similaires

  1. Pouvez-vous m'aider à comprendre cette requête ?
    Par david42 dans le forum Langage SQL
    Réponses: 12
    Dernier message: 20/12/2011, 14h37
  2. Pouvez-vous m'aider à créer un script
    Par buddydaft dans le forum VBScript
    Réponses: 2
    Dernier message: 02/08/2007, 11h03
  3. Je n'arrive pas à faire une pop-up. Pouvez-vous m'aider?
    Par Davidoux94 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/12/2006, 12h24
  4. AIdez moi à optimiser cette requete MySQL SVP
    Par petozak dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/09/2005, 15h16
  5. Pouvez vous m'aider a resoudres ces 3 exercices
    Par algorithmique dans le forum Algorithmes et structures de données
    Réponses: 11
    Dernier message: 09/08/2002, 17h26

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