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 :

Oracle 9.2 : Tuning SQL


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2004
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 312
    Par défaut Oracle 9.2 : Tuning SQL
    Bonjour à tous !

    J'ai une requête un peu gourmande, voyez vous un moyen de l'optimiser ?
    Merci.

    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    SELECT  pol.numero_police,                                                     
    mou.numero_mvt,                                                    
    det.id_agent_mvt,                                                  
    mou.mouvement_agent,                                               
    mou.date_de_reglement,                                             
    mou.date_incident,                                                 
    mou.date_debut_periode,                                            
    mou.date_fin_periode,                                              
    mou.statut_mouvement,                                              
    mou.mouvement_mods_modidate,                                       
    mou.id_mouvement,                                                  
    det.montant_detail_mvt,                                            
    par1.col_n2,                                                       
    par2.col_a2,                                                       
    eve.fractionnement,                                                
    mou.id_type_mvt,                                                   
    det.id_nature,                                                     
    cat.code_categ,                                                     
    mou.mou_id_mouvement,                                              
    reg.montant_reglement,                                              
    mou.montant_total_mouv,                                            
    mou.retenues_sociales,                                             
    reg.id_mode_paie,                                                   
    mou.prelevement_liberatoire,                                       
    eve.date_d_effet_evt,                                              
    reg.id_reglement,                                                   
    mou.id_mon_mvt,                                                    
    par4.col_n4,
    pol.id_de_police,
    mou.mouvement_mods_creadate,
    pol.id_pays,
    pol.id_agent_gestion,
    eve.id_evenement,
    eve.evenement_mods_creadate                                         
    FROM  gb_evenements eve,                                                                 
    gb_mouvements mou,                                                                 
    gb_police pol,                                                                     
    gb_detail_mvt det,                                                                 
    gb_parametre par1,                                                 
    gb_categorie cat,                                                                  
    gb_parametre par2,                                                 
    gb_parametre par3,                                  
    gb_parametre par4,                                  
    gb_reglement reg,
    gb_regltgdpa gdpa                                                                   
    WHERE  mou.id_mouvement = reg.id_mouvement (+)
    AND	 reg.id_reglement = gdpa.id_reglement (+) 
    AND  mou.id_mon_mvt = par1.id_param 
    AND  mou.id_evenement = eve.id_evenement 
    AND  pol.id_de_police = eve.id_de_police 
    AND  det.id_mouvement = mou.id_mouvement 
    AND  eve.id_categorie = cat.id_categorie 
    AND  cat.id_famille = par2.id_param  
    AND  par2.cle_etr1 = par3.id_param 
    AND  par3.cle_etr1 = par4.id_param 
    AND  (((mou.date_de_reglement > '28/02/2006') 
    AND  (mou.date_de_reglement < '01/04/2006'))  
    OR  ((mou.date_incident > '28/02/2006')  
    AND  (mou.date_incident < '01/04/2006'))  
    OR  ((mou.statut_mouvement = 68) 
    AND  (mou.mouvement_mods_modidate > '28/02/2006') 
    AND  (mou.mouvement_mods_modidate < '01/04/2006') 
    AND  (mou.date_de_reglement  IS NOT NULL))
    OR	 ((gdpa.dt_annulation > '28/02/2006')
    AND	  (gdpa.dt_annulation < '01/04/2006')
    AND   (gdpa.annulation = 1)))      
    ORDER BY  pol.numero_police ASC,                                                 
    mou.id_mouvement ASC,                                              
    det.id_agent_mvt ASC,                                              
    reg.id_reglement ASC;

  2. #2
    Membre Expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Par défaut
    Bonjour,

    Pour l'optimiser, il faudrait encore plus de renseignement :
    Plan d'execution
    Les indexes utilisés
    Nombres de lignes des tables

    etc

  3. #3
    Membre éclairé
    Inscrit en
    Novembre 2004
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 312
    Par défaut
    Vous auriez une requête pour extraire correctement les données de PLAN_TABLE ?

  4. #4
    Membre Expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Par défaut
    essayez de voir le tutoriel de Jaouad : http://oracle.developpez.com/guide/tuning/tkprof/

  5. #5
    Membre éclairé
    Inscrit en
    Novembre 2004
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 312
    Par défaut
    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
     
    PLAN_TABLE_OUTPUT
    -------------------------------------------------------------------------------------------------
     
    ----------------------------------------------------------------------------------------
    | Id  | Operation                     |  Name          | Rows  | Bytes |TempSpc| Cost  |
    ----------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT              |                |  2533K|   572M|       |   706K|
    |   1 |  SORT ORDER BY                |                |  2533K|   572M|  1237M|   706K|
    |*  2 |   HASH JOIN                   |                |  2533K|   572M|    67M| 34268 |
    |   3 |    TABLE ACCESS FULL          | GB_DETAIL_MVT  |  2533K|    38M|       |   996 |
    |*  4 |    HASH JOIN                  |                |   802K|   169M|       | 21493 |
    |   5 |     TABLE ACCESS FULL         | GB_PARAMETRE   |  4786 | 47860 |       |     7 |
    |*  6 |     FILTER                    |                |       |       |       |       |
     
    PLAN_TABLE_OUTPUT
    -------------------------------------------------------------------------------------------------
    |*  7 |      HASH JOIN OUTER          |                |       |       |       |       |
    |*  8 |       HASH JOIN OUTER         |                |   802K|   153M|   151M| 12516 |
    |*  9 |        HASH JOIN              |                |   802K|   142M|    30M|  6239 |
    |* 10 |         HASH JOIN             |                |   273K|    27M|  1848K|  2048 |
    |  11 |          TABLE ACCESS FULL    | GB_POLICE      | 47189 |  1290K|       |   182 |
    |* 12 |          HASH JOIN            |                |   273K|    20M|       |   791 |
    |* 13 |           HASH JOIN           |                |   135 |  5940 |       |    26 |
    |* 14 |            HASH JOIN          |                |   135 |  4590 |       |    18 |
    |* 15 |             HASH JOIN         |                |   135 |  3375 |       |    10 |
    |  16 |              TABLE ACCESS FULL| GB_CATEGORIE   |   135 |  1755 |       |     2 |
    |* 17 |              TABLE ACCESS FULL| GB_PARAMETRE   |  3669 | 44028 |       |     7 |
     
    PLAN_TABLE_OUTPUT
    -------------------------------------------------------------------------------------------------
    |* 18 |             TABLE ACCESS FULL | GB_PARAMETRE   |  3669 | 33021 |       |     7 |
    |  19 |            TABLE ACCESS FULL  | GB_PARAMETRE   |  4786 | 47860 |       |     7 |
    |  20 |           TABLE ACCESS FULL   | GB_EVENEMENTS  |   273K|  9095K|       |   759 |
    |  21 |         TABLE ACCESS FULL     | GB_MOUVEMENTS  |   802K|    61M|       |  1099 |
    |  22 |        TABLE ACCESS FULL      | GB_REGLEMENT   |   756K|    10M|       |   235 |
    |  23 |       TABLE ACCESS FULL       | GB_REGLTGDPA   |   625K|  6105K|       |  2286 |
    ----------------------------------------------------------------------------------------

  6. #6
    Membre éclairé
    Inscrit en
    Novembre 2004
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 312
    Par défaut
    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
     
    PLAN_TABLE_OUTPUT
    --------------------------------------------------------------------------------------
       2 - access("DET"."ID_MOUVEMENT"="MOU"."ID_MOUVEMENT")
       4 - access("MOU"."ID_MON_MVT"="PAR1"."ID_PARAM")
       6 - filter("MOU"."DATE_DE_REGLEMENT">TO_DATE('2006-02-28 00:00:00', 'yyyy-mm-dd hh
                  24:mi:ss') AND "MOU"."DATE_DE_REGLEMENT"<TO_DATE('2006-04-01 00:00:00',
                   'yyyy-mm-dd hh24:mi:ss') OR "MOU"."DATE_INCIDENT">TO_DATE('2006-02-28
                  00:00:00', 'yyyy-mm-dd hh24:mi:ss') AND "MOU"."DATE_INCIDENT"<TO_DATE('
                  2006-04-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss') OR "MOU"."STATUT_MOUVEME
                  NT"=68 AND "MOU"."MOUVEMENT_MODS_MODIDATE">TO_DATE('2006-02-28 00:00:00
                  ', 'yyyy-mm-dd hh24:mi:ss') AND "MOU"."MOUVEMENT_MODS_MODIDATE"<TO_DATE
                  ('2006-04-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss') AND "MOU"."DATE_DE_REG
                  LEMENT" IS NOT NULL OR "GDPA"."DT_ANNULATION">TO_DATE('2006-02-28 00:00
     
    PLAN_TABLE_OUTPUT
    --------------------------------------------------------------------------------------
                  :00', 'yyyy-mm-dd hh24:mi:ss') AND "GDPA"."DT_ANNULATION"<TO_DATE('2006
                  -04-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss') AND "GDPA"."ANNULATION"=1)
       7 - access("REG"."ID_REGLEMENT"="GDPA"."ID_REGLEMENT"(+))
       8 - access("MOU"."ID_MOUVEMENT"="REG"."ID_MOUVEMENT"(+))
       9 - access("MOU"."ID_EVENEMENT"="EVE"."ID_EVENEMENT")
      10 - access("POL"."ID_DE_POLICE"="EVE"."ID_DE_POLICE")
      12 - access("EVE"."ID_CATEGORIE"="CAT"."ID_CATEGORIE")
      13 - access("PAR3"."CLE_ETR1"="PAR4"."ID_PARAM")
      14 - access("PAR2"."CLE_ETR1"="PAR3"."ID_PARAM")
      15 - access("CAT"."ID_FAMILLE"="PAR2"."ID_PARAM")
      17 - filter("PAR2"."CLE_ETR1" IS NOT NULL)
     
    PLAN_TABLE_OUTPUT
    --------------------------------------------------------------------------------------
      18 - filter("PAR3"."CLE_ETR1" IS NOT NULL)

Discussions similaires

  1. [ORACLE 9i] Cartographie PL/SQL
    Par had69 dans le forum PL/SQL
    Réponses: 5
    Dernier message: 27/10/2005, 23h07
  2. Réponses: 3
    Dernier message: 11/10/2005, 09h46
  3. Type de données Oracle 9-10 et SQL Server 2000
    Par fabrice_bruxelles dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 05/10/2005, 11h21
  4. [Oracle 9.1] Plantage SQL+ à cause d'une requête
    Par ftrifiro dans le forum Oracle
    Réponses: 8
    Dernier message: 04/10/2005, 15h08
  5. ORACLE / DEVELOPPEMENT WEB / FENETRE SQL
    Par mimi_été dans le forum Oracle
    Réponses: 4
    Dernier message: 15/02/2005, 18h50

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