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 :

Comprendre le fonctionnement de plan


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 13
    Par défaut Comprendre le fonctionnement de plan
    bonjour,
    j’ai la requête suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     explain plan for(select 
         sum(lo_extendedprice*lo_discount) as revenue
     from 
         lineorder, dates
     where 
         lo_orderdate = d_datekey
         and d_year = 1993
         and lo_discount between 1 and 3
     and lo_quantity < 25);
    et puis pour voir le plan estimé je mets le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select plan_table_output from table(dbms_xplan.display());
    j'ai obtenu le plan suivant:
    PLAN_TABLE_OUTPUT
    --------------------------------------------------------------------------------
    Plan hash value: 2553672856
    
    --------------------------------------------------------------------------------
    -
    
    | Id  | Operation           | Name      | Rows  | Bytes | Cost (%CPU)| Time
    |
    
    --------------------------------------------------------------------------------
    -
    
    
    PLAN_TABLE_OUTPUT
    --------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT    |           |     1 |    28 | 18353   (4)| 00:03:41
    |
    
    |   1 |  SORT AGGREGATE     |           |     1 |    28 |            |
    |
    
    |*  2 |   HASH JOIN         |           |   142K|  3893K| 18353   (4)| 00:03:41
    |
    
    |*  3 |    TABLE ACCESS FULL| DATES     |   365 |  3650 |    11   (0)| 00:00:01
    |
    
    PLAN_TABLE_OUTPUT
    --------------------------------------------------------------------------------
    
    |*  4 |    TABLE ACCESS FULL| LINEORDER |   948K|    16M| 18324   (4)| 00:03:40
    |
    
    --------------------------------------------------------------------------------
    -
    
    
    Predicate Information (identified by operation id):
    ---------------------------------------------------
    
    
    PLAN_TABLE_OUTPUT
    --------------------------------------------------------------------------------
       2 - access("LO_ORDERDATE"="D_DATEKEY")
       3 - filter("D_YEAR"=1993)
       4 - filter("LO_DISCOUNT"<=3 AND "LO_QUANTITY"<25 AND "LO_DISCOUNT">=1)
    
    18 ligne(s) sélectionnée(s).
    j'ai pas compris le fonctionnent le plan. je veux votre aide
    Merci

  2. #2
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 229
    Par défaut
    Ici, l'information importante que je vois dans ton plan d'exécution, c'est que le moteur lis tes 2 tables, sans utiliser d'index. Sinon, tu aurais une ligne de plus dans le plan d'exécution, avec le nom de l'index utilisé

    Il lit toutes les lignes de Dates, et il met au chaud toutes les lignes de l'année l'année 1993.
    Il lit aussi toutes les lignes de lineorder, et il met au chaud toutes les lignes avec "LO_DISCOUNT"<=3 AND "LO_QUANTITY"<25 AND "LO_DISCOUNT">=1
    Puis il fait les croisements entre ces 2 extractions.

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 13
    Par défaut
    Merci pour la réponse, mais est ce que optimiseur fait le pipeline entre l'opération, si vous avez remarqué n'a pas donné le temps estimé de l'opération group by pourquoi

Discussions similaires

  1. [Joomla!] Comprendre comment fonctionne le code de joomla
    Par itmak dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 24/02/2009, 18h23
  2. Comprendre le fonctionnement d'un code
    Par developppez dans le forum Général Java
    Réponses: 2
    Dernier message: 16/05/2008, 16h58
  3. Comprendre le fonctionnement des objets de SynEdit
    Par SoftAbdou dans le forum Composants VCL
    Réponses: 5
    Dernier message: 04/05/2008, 23h49
  4. Réponses: 3
    Dernier message: 25/03/2008, 09h46
  5. Réponses: 4
    Dernier message: 11/11/2007, 15h00

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