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 :

Requete sql longue a executer


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 178
    Points : 40
    Points
    40
    Par défaut Requete sql longue a executer
    Bonjour, je rencontre un problème au niveau du temps d'exécution d'une de mes requêtes.
    En fait cette requete se base sur une vue :
    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
     
    CREATE OR REPLACE FORCE VIEW "DBO"."V_AXE_PROSP_1_3_13" ("PDS_DOMAINE_APPLI", "PDS_NIU", "CAC_NO_LETTRAGE", "PDS_LIBELLE_AFFICHAGE", "PDS_UNITE", "PDS_NATURE_CHAMP", "PDS_TABLE_VALEUR", "CAC_GRPE_CRITERE", "CAC_SGRPE_CRITERE", "CAC_SSGRPE_CRITERE", "DSG_VALEUR_DESCRIPTIF", "DSG_AG_GESTION", "DSG_NO_IMMEUBLE", "DSG_NO_LOT", "DOC") AS 
      SELECT DISTINCT
    		  PDS_Domaine_Appli,
    		  PDS_NIU,
    		  CAC_No_Lettrage,
    		  PDS_Libelle_Affichage,
    		  PDS_Unite,
    		  PDS_Nature_Champ,
    		  PDS_Table_valeur,
    		  CAC_Grpe_Critere,
    		  CAC_SGrpe_Critere,
    		  CAC_SSGrpe_Critere,
    		  DSG_Valeur_descriptif,
    		  DSG_Ag_Gestion,
    		  DSG_No_Immeuble,
    		  DSG_No_Lot
    		 FROM
    		  P_PDES INNER JOIN P_DESG ON PDS_NIU = DSG_NIU
    		  AND DSG_Domaine_Appli = PDS_Domaine_Appli
    		  LEFT OUTER JOIN CRIT_Axes_Contenu ON CAC_NIU = DSG_NIU
    		  LEFT OUTER JOIN B_DOCDESC ON DSG_Ag_Gestion = DCC_Ag_Gestion AND DSG_Domaine_Appli = DCC_Domaine_Appli AND DSG_No_cpte_general = DCC_No_Cpte_General AND DSG_No_Etab_Naiss = DCC_No_Etab_Naiss_Pers AND DSG_No_pers = DCC_No_Pers AND DSG_No_cpte_auxil = DCC_No_Cpte_Aux AND DSG_No_Etab_Nais = DCC_No_Etab_Naiss_Imm AND DSG_NIU = DCC_NIU AND No_Doss_Trx = DCC_No_Doss_Trx AND DSG_No_Immeuble = DCC_No_Imm
          LEFT OUTER JOIN B_DOCUMENT ON DCC_Code_Document = DOC_No_Chrono
         WHERE
    		  CAC_Id_Axe=13
    		  AND PDS_Domaine_Appli = 'Prosp'
          AND DSG_Ag_Gestion = 1
    		  AND DSG_No_Etab_Naiss = 1
    		  AND DSG_No_pers = 3
    		 ;
    Et la requête en question
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT DISTINCT CAC_SSGRPE_CRITERE,CAC_NO_LETTRAGE FROM V_Axe_Prosp_1_3_13 WHERE CAC_GRPE_CRITERE=' ' AND CAC_SGRPE_CRITERE=' ' ORDER BY CAC_NO_LETTRAGE;
    Cette requête ne dois me retourner que 5 enregistrements et elle met pourtant plus d'une minute a s'executer.
    En revanche lorsque je supprime la clause
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AND DSG_Ag_Gestion = 1
    de ma vue, la requête s'exécute très rapidement mais ne me retourne pas les bons résultats.
    Est ce que quelqu'un aurait une idée sur le probléme?une piste?
    Merci d'avance.

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Il faudrait utiliser des alias de tables pour toutes les colonnes de votre vue afin qu'on puisse y comprendre plus de choses : là on ne sait pas qui appartient à quoi, ce qui est d'autant plus crucial que vous avez des jointures externes.

  3. #3
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 178
    Points : 40
    Points
    40
    Par défaut
    voila :
    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
     
    CREATE OR REPLACE FORCE VIEW "DBO"."V_AXE_PROSP_1_3_13" ("PDS_DOMAINE_APPLI", "PDS_NIU", "CAC_NO_LETTRAGE", "PDS_LIBELLE_AFFICHAGE", "PDS_UNITE", "PDS_NATURE_CHAMP", "PDS_TABLE_VALEUR", "CAC_GRPE_CRITERE", "CAC_SGRPE_CRITERE", "CAC_SSGRPE_CRITERE", "DSG_VALEUR_DESCRIPTIF", "DSG_AG_GESTION", "DSG_NO_IMMEUBLE", "DSG_NO_LOT", "DOC") AS 
      SELECT DISTINCT
    		  P_PDES.PDS_Domaine_Appli,
    		  P_PDES.PDS_NIU,
    		  CRIT_Axes_Contenu.CAC_No_Lettrage,
    		  P_PDES.PDS_Libelle_Affichage,
    		  P_PDES.PDS_Unite,
    		  P_PDES.PDS_Nature_Champ,
    		  P_PDES.PDS_Table_valeur,
    		 CRIT_Axes_Contenu. CAC_Grpe_Critere,
    		  CRIT_Axes_Contenu.CAC_SGrpe_Critere,
    		  CRIT_Axes_Contenu.CAC_SSGrpe_Critere,
    		  P_DESG.DSG_Valeur_descriptif,
    		  P_DESG.DSG_Ag_Gestion,
    		  P_DESG.DSG_No_Immeuble,
    		  P_DESG.DSG_No_Lot,
                     B_DOCUMENT.CASE DOC_Nom WHEN NULL then 0 else 1 end AS DOC
    		 FROM
    		  P_PDES INNER JOIN P_DESG ON P_PDES.PDS_NIU = P_DESG.DSG_NIU
    		  AND P_DESG.DSG_Domaine_Appli = P_DESG.PDS_Domaine_Appli
    		  LEFT OUTER JOIN CRIT_Axes_Contenu ON CRIT_Axes_Contenu.CAC_NIU = P_DESG.DSG_NIU
    		  LEFT OUTER JOIN B_DOCDESC ON P_DESG.DSG_Ag_Gestion = B_DOCDESC.DCC_Ag_Gestion AND P_DESG.DSG_Domaine_Appli = B_DOCDESC.DCC_Domaine_Appli AND P_DESG.DSG_No_cpte_general = B_DOCDESC.DCC_No_Cpte_General AND P_DESG.DSG_No_Etab_Naiss = B_DOCDESC.DCC_No_Etab_Naiss_Pers AND P_DESG.DSG_No_pers = B_DOCDESC.DCC_No_Pers AND P_DESG.DSG_No_cpte_auxil = B_DOCDESC.DCC_No_Cpte_Aux AND P_DESG.DSG_No_Etab_Nais = B_DOCDESC.DCC_No_Etab_Naiss_Imm AND P_DESG.DSG_NIU = B_DOCDESC.DCC_NIU AND P_DESG.No_Doss_Trx = B_DOCDESC.DCC_No_Doss_Trx AND P_DESG.DSG_No_Immeuble = B_DOCDESC.DCC_No_Imm
          LEFT OUTER JOIN B_DOCUMENT ON B_DOCDESC.DCC_Code_Document = B_DOCUMENT.DOC_No_Chrono
         WHERE
    		  CRIT_Axes_Contenu.CAC_Id_Axe=13
    		  AND P_DESG.PDS_Domaine_Appli = 'Prosp'
                      AND P_DESG.DSG_Ag_Gestion = 1
    		  AND P_DESG.DSG_No_Etab_Naiss = 1
    		  AND P_DESG.DSG_No_pers = 3
    		 ;

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Une remarque, votre jointure externe sur CRIT_Axes_Contenu s'est tranformée en jointure forte à cause du where.

    Est-ce que cette jointure externe est nécessaire ?

    Ensuite il faudrait la liste des index de la table P_DESG qui est massivement filtrée.

    Enfin il nous faut les plans d'exécution de votre requête (avec et sans la condition).

  5. #5
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 178
    Points : 40
    Points
    40
    Par défaut
    La jointure avec crit_axe_contenu est nécessaire, concernant les plan d'exécution comment puis-je les récupérer?
    Et voici ma clé primaire sur la table p_desg :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    PRIMARY KEY ("DSG_NO_IMMEUBLE", "DSG_NO_LOT", "DSG_NIU", "DSG_AGGEST", "DSG_MANDAT", "NO_DOSS_TRX", "DSG_AG_GESTION", "DSG_DOMAINE_APPLI", "DSG_NO_CPTE_GENERAL", "DSG_NO_ETAB_NAISS", "DSG_NO_PERS", "DSG_NO_CPTE_AUXIL", "DSG_NO_ETAB_NAIS")

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Je me doute bien que la jointure est nécessaire, je parlais de son caractère externe ! C'est écrit comme étant une jointure externe mais c'est exécuté comme étant une jointure forte.
    Donc soit :
    1. le caractère externe n'est pas nécessaire et vous pourrez remplacer le LEFT OUTER JOIN par un INNER JOIN
    2. le caractère externe est nécessaire et il faudra monter le prédicat CRIT_Axes_Contenu.CAC_Id_Axe=13 au niveau de la jointure.

    Le second choix peut modifier le résultat de la vue.

    Ensuite votre PK, c'est impressionnant mais probablement pas très efficace.
    Est-ce qu'on peut avoir la structure complète de vos tables ?

    Pour l'explain plan, ça dépend si vous avez un outil genre Toad ou SQL*Plus.
    EXPLAIN PLAN FOR <votre requete> pour ce dernier il me semble, faites des recherches si ça ne fonctionne pas.

    Ah et question bonus, quelle est votre version d'Oracle ?

  7. #7
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 178
    Points : 40
    Points
    40
    Par défaut
    voila le plan d'execution avec la clause where :
    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
     
    SQL> SELECT * FROM PLAN_TABLE;
     
    45 ligne(s) sélectionnée(s).
     
     
    Plan d'exécution
    ----------------------------------------------------------
    Plan hash value: 103984305
     
    ---------------------------------------------------------------------------------
    | Id  | Operation         | Name        | Rows  | Bytes | Cost (%CPU)| Time     |
    ---------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT  |             |    45 |   486K|     3   (0)| 00:00:01 |
    |   1 |  TABLE ACCESS FULL| PLAN_TABLE$ |    45 |   486K|     3   (0)| 00:00:01 |
    ---------------------------------------------------------------------------------
     
    Note
    -----
       - dynamic sampling used for this statement
       - star transformation used for this statement
     
     
    Statistiques
    ----------------------------------------------------------
              4  recursive calls
              0  db block gets
             56  consistent gets
              0  physical reads
              0  redo size
          45369  bytes sent via SQL*Net to client
           9593  bytes received via SQL*Net from client
             50  SQL*Net roundtrips to/from client
              0  sorts (memory)
              0  sorts (disk)
             45  rows processed

  8. #8
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 178
    Points : 40
    Points
    40
    Par défaut
    et voila le plan d'execution pour la requete sans la clause where :
    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
     
    SQL> select * from plan_table;
     
    56 ligne(s) sélectionnée(s).
     
     
    Plan d'exécution
    ----------------------------------------------------------
    Plan hash value: 103984305
     
    ---------------------------------------------------------------------------------
    | Id  | Operation         | Name        | Rows  | Bytes | Cost (%CPU)| Time     |
    ---------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT  |             |    56 |   605K|     4   (0)| 00:00:01 |
    |   1 |  TABLE ACCESS FULL| PLAN_TABLE$ |    56 |   605K|     4   (0)| 00:00:01 |
    ---------------------------------------------------------------------------------
     
    Note
    -----
       - dynamic sampling used for this statement
       - star transformation used for this statement
     
     
    Statistiques
    ----------------------------------------------------------
              4  recursive calls
              0  db block gets
             76  consistent gets
              0  physical reads
              0  redo size
          58339  bytes sent via SQL*Net to client
          12534  bytes received via SQL*Net from client
             62  SQL*Net roundtrips to/from client
              0  sorts (memory)
              0  sorts (disk)

  9. #9
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Ca ce sont les plans d'exécution de vos "SELECT * FROM PLAN_TABLE" !

  10. #10
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 178
    Points : 40
    Points
    40
    Par défaut
    la version d'oracle est la suivante 9i...

  11. #11
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 178
    Points : 40
    Points
    40
    Par défaut
    structure table p_desg :
    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
     
     
      CREATE TABLE "DBO"."P_DESG" 
       (	"DSG_AG_GESTION" NUMBER(5,0) NOT NULL ENABLE, 
    	"DSG_DOMAINE_APPLI" VARCHAR2(8 CHAR) NOT NULL ENABLE, 
    	"DSG_NO_CPTE_GENERAL" NUMBER(10,0) NOT NULL ENABLE, 
    	"DSG_NO_ETAB_NAISS" NUMBER(5,0) NOT NULL ENABLE, 
    	"DSG_NO_PERS" NUMBER(10,0) NOT NULL ENABLE, 
    	"DSG_NO_CPTE_AUXIL" NUMBER(5,0) NOT NULL ENABLE, 
    	"DSG_NO_ETAB_NAIS" NUMBER(5,0) NOT NULL ENABLE, 
    	"DSG_NO_IMMEUBLE" NUMBER(5,0) NOT NULL ENABLE, 
    	"DSG_NO_LOT" VARCHAR2(5 CHAR) NOT NULL ENABLE, 
    	"DSG_VALEUR_DESCRIPTIF" VARCHAR2(200 CHAR), 
    	"DSG_VALEUR_MEMO" VARCHAR2(500 CHAR), 
    	"DSG_ACTIVITE" VARCHAR2(2 CHAR) NOT NULL ENABLE, 
    	"DSG_AGGEST" NUMBER(10,0) NOT NULL ENABLE, 
    	"DSG_MANDAT" NUMBER(10,0) NOT NULL ENABLE, 
    	"DSG_NIU" FLOAT(126) NOT NULL ENABLE, 
    	"NO_DOSS_TRX" NUMBER(10,0) NOT NULL ENABLE, 
    	 CONSTRAINT "DSG_AUX_IMM" PRIMARY KEY ("DSG_NO_IMMEUBLE", "DSG_NO_LOT", "DSG_NIU", "DSG_AGGEST", "DSG_MANDAT", "NO_DOSS_TRX", "DSG_AG_GESTION", "DSG_DOMAINE_APPLI", "DSG_NO_CPTE_GENERAL", "DSG_NO_ETAB_NAISS", "DSG_NO_PERS", "DSG_NO_CPTE_AUXIL", "DSG_NO_ETAB_NAIS")
      USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
      STORAGE(INITIAL 91226112 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
      TABLESPACE "USERS"  ENABLE
       ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
      STORAGE(INITIAL 72351744 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
      TABLESPACE "USERS" ;
     
     
      CREATE UNIQUE INDEX "DBO"."DSG_AUX_IMM" ON "DBO"."P_DESG" ("DSG_NO_IMMEUBLE", "DSG_NO_LOT", "DSG_NIU", "DSG_AGGEST", "DSG_MANDAT", "NO_DOSS_TRX", "DSG_AG_GESTION", "DSG_DOMAINE_APPLI", "DSG_NO_CPTE_GENERAL", "DSG_NO_ETAB_NAISS", "DSG_NO_PERS", "DSG_NO_CPTE_AUXIL", "DSG_NO_ETAB_NAIS") 
      PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
      STORAGE(INITIAL 91226112 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
      TABLESPACE "USERS" ;
     
      CREATE INDEX "DBO"."DSG_DOMAINE" ON "DBO"."P_DESG" ("DSG_AG_GESTION", "DSG_DOMAINE_APPLI", "DSG_NIU") 
      PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
      STORAGE(INITIAL 48234496 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
      TABLESPACE "USERS" ;
     
      CREATE INDEX "DBO"."DSG_MANDAT" ON "DBO"."P_DESG" ("DSG_AG_GESTION", "DSG_ACTIVITE", "DSG_MANDAT", "NO_DOSS_TRX") 
      PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
      STORAGE(INITIAL 40894464 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
      TABLESPACE "USERS" ;

  12. #12
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 178
    Points : 40
    Points
    40
    Par défaut
    structure de la table p_pdes :
    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
     
     
      CREATE TABLE "DBO"."P_PDES" 
       (	"PDS_DOMAINE_APPLI" VARCHAR2(8 CHAR) NOT NULL ENABLE, 
    	"NO_LETTRAGE" NUMBER(10,0) NOT NULL ENABLE, 
    	"PDS_LIBELLE_AFFICHAGE" VARCHAR2(30 CHAR), 
    	"PDS_NATURE_CHAMP" VARCHAR2(1 CHAR), 
    	"PDS_NBRE_CARACTERE" NUMBER(5,0), 
    	"PDS_NBRE_DECIMALE" NUMBER(5,0), 
    	"PDS_UNITE" VARCHAR2(5 CHAR), 
    	"PDS_TABLE_VALEUR" VARCHAR2(10 CHAR), 
    	"PDS_GRPE_CRITERE" VARCHAR2(15 CHAR) NOT NULL ENABLE, 
    	"PDS_SGRPE_CRITERE" VARCHAR2(15 CHAR), 
    	"PDS_SSGRPE_CRITERE" VARCHAR2(15 CHAR), 
    	"PDS_NIU" FLOAT(126) NOT NULL ENABLE, 
    	"PDS_NUM_ECRAN_LOT" NUMBER(5,0), 
    	"PDS_INVISIBLE_O_N" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
    	 CONSTRAINT "NIU" PRIMARY KEY ("PDS_NIU")
      USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
      TABLESPACE "USERS"  ENABLE
       ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
      STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
      TABLESPACE "USERS" ;
     
     
      CREATE UNIQUE INDEX "DBO"."NIU" ON "DBO"."P_PDES" ("PDS_NIU") 
      PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
      TABLESPACE "USERS" ;
     
      CREATE INDEX "DBO"."PDS_C_DESCRIPTIF" ON "DBO"."P_PDES" ("PDS_DOMAINE_APPLI", "NO_LETTRAGE") 
      PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
      TABLESPACE "USERS" ;
     
      CREATE INDEX "DBO"."PDS_GROUPE" ON "DBO"."P_PDES" ("PDS_GRPE_CRITERE", "PDS_DOMAINE_APPLI", "NO_LETTRAGE", "PDS_LIBELLE_AFFICHAGE") 
      PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
      STORAGE(INITIAL 131072 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
      TABLESPACE "USERS" ;

  13. #13
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 178
    Points : 40
    Points
    40
    Par défaut
    structure de la table crit_axe_contenu :
    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
     
     
      CREATE TABLE "DBO"."CRIT_AXES_CONTENU" 
       (	"CAC_ID_AXE" NUMBER(10,0) NOT NULL ENABLE, 
    	"CAC_NIU" FLOAT(126) NOT NULL ENABLE, 
    	"CAC_GRPE_CRITERE" VARCHAR2(250 CHAR), 
    	"CAC_SGRPE_CRITERE" VARCHAR2(250 CHAR), 
    	"CAC_SSGRPE_CRITERE" VARCHAR2(250 CHAR), 
    	"CAC_NO_LETTRAGE" NUMBER(10,0), 
    	 CONSTRAINT "CAC_AXE_CONTENU" PRIMARY KEY ("CAC_ID_AXE", "CAC_NIU")
      USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
      TABLESPACE "USERS"  ENABLE
       ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
      STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
      PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
      TABLESPACE "USERS" ;

  14. #14
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 178
    Points : 40
    Points
    40
    Par défaut
    comment récupérer le plan d'exécution de ma requête je n'y arrive pas?

  15. #15
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 178
    Points : 40
    Points
    40
    Par défaut
    plan d'execution de la requete avec la clause where :
    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
     
    SQL> SELECT * FROM PLAN_TABLE where statement_id='lvwhere';
     
    15 ligne(s) sélectionnée(s).
     
     
    Plan d'exécution
    ----------------------------------------------------------
    Plan hash value: 103984305
     
    ---------------------------------------------------------------------------------
    | Id  | Operation         | Name        | Rows  | Bytes | Cost (%CPU)| Time     |
    ---------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT  |             |    15 |   162K|     4   (0)| 00:00:01 |
    |*  1 |  TABLE ACCESS FULL| PLAN_TABLE$ |    15 |   162K|     4   (0)| 00:00:01 |
    ---------------------------------------------------------------------------------
     
    Predicate Information (identified by operation id):
    ---------------------------------------------------
     
       1 - filter("STATEMENT_ID"='lvwhere')
     
    Note
    -----
       - dynamic sampling used for this statement
       - star transformation used for this statement
     
     
    Statistiques
    ----------------------------------------------------------
              5  recursive calls
              0  db block gets
             39  consistent gets
              0  physical reads
              0  redo size
          15781  bytes sent via SQL*Net to client
           3301  bytes received via SQL*Net from client
             18  SQL*Net roundtrips to/from client
              0  sorts (memory)
              0  sorts (disk)
             15  rows processed

  16. #16
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 178
    Points : 40
    Points
    40
    Par défaut
    et le plan d'execution de la requete sans le where :
    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
     
    SQL>  SELECT * FROM PLAN_TABLE where statement_id='lvnotwhere';
     
    11 ligne(s) sélectionnée(s).
     
     
    Plan d'exécution
    ----------------------------------------------------------
    Plan hash value: 103984305
     
    ---------------------------------------------------------------------------------
    | Id  | Operation         | Name        | Rows  | Bytes | Cost (%CPU)| Time     |
    ---------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT  |             |    11 |   119K|     4   (0)| 00:00:01 |
    |*  1 |  TABLE ACCESS FULL| PLAN_TABLE$ |    11 |   119K|     4   (0)| 00:00:01 |
    ---------------------------------------------------------------------------------
     
    Predicate Information (identified by operation id):
    ---------------------------------------------------
     
       1 - filter("STATEMENT_ID"='lvnotwhere')
     
    Note
    -----
       - dynamic sampling used for this statement
       - star transformation used for this statement
     
     
    Statistiques
    ----------------------------------------------------------
              4  recursive calls
              0  db block gets
             34  consistent gets
              0  physical reads
              0  redo size
          15761  bytes sent via SQL*Net to client
           3272  bytes received via SQL*Net from client
             14  SQL*Net roundtrips to/from client
              0  sorts (memory)
              0  sorts (disk)
             11  rows processed

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Avril 2006
    Messages : 35
    Points : 39
    Points
    39
    Par défaut
    Pour obtenir le plan d'éxécution de votre requête :


    1) exécuter explain plan
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    explain plan for  code de votre requete
    exemple ici pour le premier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    explain plan for SELECT DISTINCT CAC_SSGRPE_CRITERE,CAC_NO_LETTRAGE FROM V_Axe_Prosp_1_3_13 WHERE CAC_GRPE_CRITERE=' ' AND CAC_SGRPE_CRITERE=' ' ORDER BY CAC_NO_LETTRAGE;
    2)Récupérer le résultat
    [
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select plan_table_output from table(dbms_xplan.display('plan_table',null,'serial'));

  18. #18
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 178
    Points : 40
    Points
    40
    Par défaut
    voila le plan d'execution de la requete avec le where :
    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
     
    SQL> EXPLAIN plan FOR SELECT DISTINCT CAC_SSGRPE_CRITERE,CAC_NO_LETTRAGE FROM V_Axe_Prosp_1_3_13 WHERE CAC_GRPE_CRITER
     
    Explicité.
     
    SQL> SELECT plan_table_output FROM TABLE(dbms_xplan.display('plan_table',NULL,'serial'));
     
    44 ligne(s) sélectionnée(s).
     
     
    Plan d'exécution
    ----------------------------------------------------------
    Plan hash value: 2137789089
     
    ---------------------------------------------------------------------------------------------
    | Id  | Operation                         | Name    | Rows  | Bytes | Cost (%CPU)| Time     |
    ---------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT                  |         |  8168 | 16336 |    24   (0)| 00:00:01 |
    |   1 |  COLLECTION ITERATOR PICKLER FETCH| DISPLAY |       |       |            |          |
    ---------------------------------------------------------------------------------------------
     
    Note
    -----
       - star transformation used for this statement
     
     
    Statistiques
    ----------------------------------------------------------
             37  recursive calls
             12  db block gets
            171  consistent gets
              0  physical reads
              0  redo size
           3828  bytes sent via SQL*Net to client
            360  bytes received via SQL*Net from client
              4  SQL*Net roundtrips to/from client
              1  sorts (memory)
              0  sorts (disk)
             44  rows processed

  19. #19
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 178
    Points : 40
    Points
    40
    Par défaut
    et voici le plan d'execution de la requete sans le where :
    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
     
    SQL> EXPLAIN plan FOR SELECT DISTINCT CAC_SSGRPE_CRITERE,CAC_NO_LETTRAGE FROM V_Axe_Prosp_1_3_13;
     
    Explicité.
     
    SQL> SELECT plan_table_output FROM TABLE(dbms_xplan.display('plan_table',NULL,'serial'));
     
    42 ligne(s) sélectionnée(s).
     
     
    Plan d'exécution
    ----------------------------------------------------------
    Plan hash value: 2137789089
     
    ---------------------------------------------------------------------------------------------
    | Id  | Operation                         | Name    | Rows  | Bytes | Cost (%CPU)| Time     |
    ---------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT                  |         |  8168 | 16336 |    24   (0)| 00:00:01 |
    |   1 |  COLLECTION ITERATOR PICKLER FETCH| DISPLAY |       |       |            |          |
    ---------------------------------------------------------------------------------------------
     
    Note
    -----
       - star transformation used for this statement
     
     
    Statistiques
    ----------------------------------------------------------
             25  recursive calls
             12  db block gets
             61  consistent gets
              0  physical reads
              0  redo size
           3705  bytes sent via SQL*Net to client
            360  bytes received via SQL*Net from client
              4  SQL*Net roundtrips to/from client
              1  sorts (memory)
              0  sorts (disk)
             42  rows processed

  20. #20
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Avril 2006
    Messages : 35
    Points : 39
    Points
    39
    Par défaut
    Oups désolé cela n'affiche pas le plan d'exécution de la requete .

    Essaye voir de remplacer la deuxième commande que j'ai donné par :

    SELECT * FROM TABLE(dbms_xplan.display);

    Ou utilise autotrace si tu peux :
    http://www.orafaq.com/wiki/Explain_Plan

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Comment parser une requete sql sans l'executer
    Par FABFAB125 dans le forum SQL
    Réponses: 2
    Dernier message: 30/11/2007, 17h21
  2. [Connexion BDD Requete SQL] Probleme d'execution
    Par GarsDuCalvados dans le forum VB.NET
    Réponses: 4
    Dernier message: 25/07/2007, 08h22
  3. Requete Sql erreur d'execution 3075
    Par torNAdE dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 18/07/2006, 19h55
  4. [CR8.5] Comment executer ses propres requetes SQL.
    Par caviar dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 26/10/2004, 20h44
  5. pb d'execution d'une requete sql
    Par pit9.76 dans le forum Bases de données
    Réponses: 2
    Dernier message: 26/06/2004, 12h03

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