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


Sujet :

Oracle

  1. #1
    Membre actif
    Inscrit en
    Décembre 2002
    Messages
    438
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 438
    Points : 218
    Points
    218
    Par défaut Optimisation requête
    Bonjour,

    J'ai une requête un peu longue. voici une trace tkprof :

    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
    call     count       cpu    elapsed       disk      query    current        rows
    ------- ------  -------- ---------- ---------- ---------- ----------  ----------
    Parse        2      0.04       0.06          0          0          0           0
    Execute      2      0.02       0.02          0          0          0           0
    Fetch       20      2.46      48.09       6354      17626        174         187
    ------- ------  -------- ---------- ---------- ---------- ----------  ----------
    total       24      2.52      48.17       6354      17626        174         187
     
    Misses in library cache during parse: 1
    Optimizer goal: CHOOSE
    Parsing user id: 41  (ETUD)
     
    Rows     Row Source Operation
    -------  ---------------------------------------------------
         94  SORT UNIQUE 
         97   HASH JOIN 
        343    INDEX FAST FULL SCAN (object id 79939)
         97    HASH JOIN 
         97     FILTER 
         98      HASH JOIN OUTER 
         95       TABLE ACCESS FULL IM_INTASAI 
     151595       INDEX FAST FULL SCAN (object id 42234)
      30296     TABLE ACCESS FULL ARTDGENE 
     
     
    Rows     Execution Plan
    -------  ---------------------------------------------------
          0  SELECT STATEMENT   GOAL: CHOOSE
         94   SORT (UNIQUE)
         97    HASH JOIN
        343     INDEX   GOAL: ANALYZED (FAST FULL SCAN) OF 'PARSOCPV_2' 
                    (NON-UNIQUE)
         97     HASH JOIN
         97      FILTER
         98       HASH JOIN (OUTER)
         95        TABLE ACCESS   GOAL: ANALYZED (FULL) OF 'IM_INTASAI'
     151595        INDEX   GOAL: ANALYZED (FAST FULL SCAN) OF 
                       'IM_INTCLIV_2' (NON-UNIQUE)
      30296      TABLE ACCESS   GOAL: ANALYZED (FULL) OF 'ARTDGENE'
    La phase fetch me semble trop longue. Pourquoi cela prend autant de temps ? Temps réseau ?

  2. #2
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 74
    Points : 54
    Points
    54
    Par défaut
    La ou il y a des (full) c'est pcq tu fais un full table scan pour chercher tes donnees. Il y a un (full) pcq ton select n'utilise probablement pas un indexe de la table.

    Regarde les indexes sur la table et utilise les. Cela devrait reduire le temps d'execution.

  3. #3
    Membre actif
    Inscrit en
    Décembre 2002
    Messages
    438
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 438
    Points : 218
    Points
    218
    Par défaut
    ok pour les full.

    Mais si tu regardes le temps d'execution n'est pas enorme. C'est le temps fetch qui pose problème. C'est donc l'extraction des 187 lignes qui prend du temps. (a noter qu'il n'y a pas d'order by dans le select)

    Etes-vous d'accord avec mon analyse ?

  4. #4
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Points : 848
    Points
    848
    Par défaut
    Les phases de préparations d'un select ne coutent quasi rien (parse...). Tout le calcul est fait au niveau de chaque fetch.

    Etant donné que dans ton plan, ca se termine par un tri, je pense que c'est le premier fetch qui est couteux, il faut calculer tout le resultset, le trier pour renvoyer la première ligne, ensuite les autres fetch doivent être bcp plus rapide.


    Laly.

  5. #5
    Membre actif
    Inscrit en
    Décembre 2002
    Messages
    438
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 438
    Points : 218
    Points
    218
    Par défaut
    je pensais que dans la fase EXECUTE, Oracle identifie les lignes concernées. Dans la fase FETCH il ne reste plus qu'a ramener les 187 lignes.

    Me confirmes-tu que cela n'est pas le cas ?

  6. #6
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Jaouad explique chaque étape dans son tuto :
    http://oracle.developpez.com/guide/tuning/tkprof/#LV

Discussions similaires

  1. optimisation requête-regroupement info
    Par mariobedard dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/09/2005, 15h10
  2. Besoin d'aide pour optimiser requête SQL
    Par Keuf95 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 06/09/2005, 16h02
  3. Optimiser requête utilisant NOT IN
    Par Neilos dans le forum Langage SQL
    Réponses: 5
    Dernier message: 11/08/2005, 14h24
  4. optimisation requête
    Par alex2205 dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 09/02/2005, 14h15
  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