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 requete oracle


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 137
    Par défaut Optimisation requete oracle
    Bonjour à tous,
    Mon prbm est le suivant:
    Sur ma base de production oracle, l’optimizer_mode est choose, quand je lance ma requête depuis sqlplus avec le hint _/* + CHOOSE */ le résultat est rapide, 7 minutes environs, par contre, quand je la en mode rule _/* +RULE*/ elle ne répond pas, je serai obligé de killer la session oracle. Mais ça c’est récent, car avant elle répondait dans les deux modes ? Qu’est ce qu’il faut faire ? et pourquoi avant elle répondait et maintenant non ?
    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
    il est rare d'avoir une requête qui est aussi adaptée en RULE qu'en CHOOSE. Je pense que désormais les stats sont suffisantes pour que le mode CHOOSE soit favorable.

  3. #3
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 181
    Par défaut
    comme a dit FRED_D il,faut mettre à jour les stats sinon il faut voir aussi de plus prêt les 2 plan d'execution

  4. #4
    Membre Expert
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Par défaut
    le mode /*+ RULE */ est utiliser quand on veux avoir un plan d'exécution fixe, mais attention, si il y a une évolution dans la répartition des données ou la structure (par ex: la création d'un nouvel index, une table de 5 ligne passant à 2000 lignes, un critère auparavant trés discriminant qui ne l'est plus etc...)

    Y a-t-il eu une évolution de la sorte sur ta base ?

    Attention les HINT sont très sensible et lorsque tu fais une erreur de syntaxe, oracle ne lève aucune exception et exécute la requête comme si le hint n'existait pas. Dans ton exemple, il y a un espace entre "*" et "+" ce qui fait qu'il ne sera pas pris en compte. Pour valider ton hint, il faut donc impérativement éditer le plan d'exécution.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 137
    Par défaut
    Bonjour,
    Je vous remercie pour votre réactivité, voici la requete et le plan d'execution:
    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
    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
     
    SELECT /*+ rule */ pr.imsi, pr.msisdn, TO_CHAR(pr.entdate, 'DD/MM/YYYY'),
    pc.offre_id,pc.sale_syst_cust,pc.iccid, pc.imei, TO_CHAR(pc.gencod), pc.co_id,
    pc.vente_id, pc.flag_feh_sale, pc.vidpmsold, pc.msisdn,pc.code_plan 
    FROM ppc_sim_cust_hst pc, ppctn_hist pr, info_contr_text ict 
    WHERE pr.imsi = pc.imsi
    AND ict.co_id = pc.co_id AND ict.text15 IS NULL AND pr.old_state = 1 AND
    pr.new_state = 2 AND pr.entdate < (sysdate-(60/1440)) AND (pr.msisdn,
    pr.ppctn_reqno) IN (SELECT pp.msisdn, MIN(pp.ppctn_reqno) FROM ppctn_hist pp
    WHERE pp.old_state = 1 AND pp.new_state = 2 group by pp.msisdn) AND
    pc.STAMSI='P' ;
     
     
    OPERATION                                               OBJECT                              OPTIMIZER              COST       CARD
    ------------------------------------------------------- ----------------------------------- ---------------- ---------- ----------
    SELECT STATEMENT                                                                            HINT: RULE
      FILTER
        SORT (GROUP BY)
          TABLE ACCESS (BY INDEX ROWID)                     PPC_SIM_CUST_HST                    ANALYZED
            NESTED LOOPS
              NESTED LOOPS
                NESTED LOOPS
                  TABLE ACCESS (FULL)                       INFO_CONTR_TEXT                     ANALYZED
                  TABLE ACCESS (BY INDEX ROWID)             PPCTN_HIST                          ANALYZED
                    INDEX (RANGE SCAN)                      PPCTN_HISTI3 (NON-UNIQUE)           ANALYZED
                TABLE ACCESS (BY INDEX ROWID)               PPCTN_HIST                          ANALYZED
                  AND-EQUAL
                    INDEX (RANGE SCAN)                      IDX_PPCTN_HIST_MSISDN (NON-UNIQUE)  ANALYZED
                    INDEX (RANGE SCAN)                      PPCTN_HISTI3 (NON-UNIQUE)           ANALYZED
              INDEX (RANGE SCAN)                            PPC_SIM_CUST_HST_CO_ID (NON-UNIQUE) ANALYZED
     
    OWNER        TABLE_NAME                 NUM_ROWS AVG_ROW_LEN      CHAIN_COUNT     BLOCKS EMPTY_BLOCKS  AVG_SPACE LAST_ANALYZED    GS
    ------------ ------------------------ ---------- ----------- ---------------- ---------- ------------ ---------- ---------------- --
    SYSADM       PPC_SIM_CUST_HST              16118         158          0              385          126       1298 27/08/2006 00:11 N
                 INFO_CONTR_TEXT             1244636         164     440717   35%      39557         9594       2336 27/08/2006 00:13 N
                 PPCTN_HIST                 12822418          90        164    0%     240420         5339       3050 27/08/2006 00:56 N
     
     
    Mode CHOOSE
     
    OPERATION                                               OBJECT                              OPTIMIZER              COST       CARD
    ------------------------------------------------------- ----------------------------------- ---------------- ---------- ----------
    SELECT STATEMENT                                                                            CHOOSE                41053          1
      HASH JOIN (SEMI)                                                                                                41053          1
        TABLE ACCESS (BY INDEX ROWID)                       PPCTN_HIST                          ANALYZED                 10      38119
          NESTED LOOPS                                                                                                   72          1
            NESTED LOOPS                                                                                                 62          1
              TABLE ACCESS (FULL)                           PPC_SIM_CUST_HST                    ANALYZED                 60          1
              TABLE ACCESS (BY INDEX ROWID)                 INFO_CONTR_TEXT                     ANALYZED                  2     200437
                INDEX (UNIQUE SCAN)                         PKINFO_CONTR_TEXT (UNIQUE)          ANALYZED                  1          6
            INDEX (RANGE SCAN)                              PPCTN_HIST_IMSI (NON-UNIQUE)        ANALYZED                  3         10
        VIEW                                                VW_NSO_1                                                  40978     575464
          SORT (GROUP BY)                                                                                             40978     575464
            TABLE ACCESS (FULL)                             PPCTN_HIST                          ANALYZED              36491     762371
    Merci d'avance,

    Edit par bouyao : pense à

  6. #6
    Membre Expert
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Par défaut
    tu va te faire gronder tu n'a pas utiliser les balises [ CODE ] [/ CODE ] ce qui aurait rendu les choses plus lisible. Pour le plan en rule, il faudrait avoir le plan à l'époque ou ça fonctionnait bien pour comprendre, sans ça, tu sera réduit à faire des suppositions quand à la modif de ta base comme je le disais plus haut.

    Attention utiliser le mode rule signifie que tu maitrise de A à Z tout ton plan et surtout la méthode pour y parvenir.

    Sinon dans l'absolu, heureusement que le mode CHOOSE arrive à un meilleur résultat que RULE, sinon ça voudrait dire que l'optimiseur ne sert à rien....

  7. #7
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 181
    Par défaut
    une autre info qui peut eclaircir les choses encore plus : la taille des tables en nombre d'enregistrement ? je suppose que INFO_CONTR_TEXT est la plus grande non ?peux tu mettre à jour les stats et refaire le test qu'est ce que ça donne ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/09/2007, 11h14
  2. Optimisation de requete oracle
    Par Mehdilis dans le forum Oracle
    Réponses: 4
    Dernier message: 18/12/2006, 13h42
  3. [sgbd]Optimisation des requetes Oracle/Perl
    Par linou dans le forum SGBD
    Réponses: 7
    Dernier message: 30/06/2005, 18h09
  4. [SYBASE] optimisation requete UPDATE
    Par metheorn dans le forum Sybase
    Réponses: 8
    Dernier message: 24/05/2004, 17h01
  5. Optimisation requetes SQL
    Par joel90 dans le forum Administration
    Réponses: 18
    Dernier message: 15/05/2004, 21h45

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