Bonjour,

J'ai une requête qui me retroune des enreg. quand j'essaie de créer une vue sur ce select, il prend bcp (trop) de temps.

Soit le code du select :

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
 
SELECT SD_MVTPRES.STATUS SD_MVTPRES_STATUS
,SD_MVTPRES.DB_ELEMENT_ID SD_MVTPRES_DB_ELEMENT_ID
,SD_MVTPRES.ID SD_MVTPRES_ID
,SD_MVTPRES.SD_MVT_TER_ID SD_MVTPRES_SD_MVT_TER_ID
,SD_MVTPRES.INT_ROLE_EMP_ID SD_MVTPRES_INT_ROLE_EMP_ID
,SD_MVTPRES.INT_ROLE_PAT_ID SD_MVTPRES_INT_ROLE_PAT_ID
,SD_MVTPRES.AS_PRODUIT_ID SD_MVTPRES_AS_PRODUIT_ID
,SD_MVTPRES.DATE_PRESTATION SD_MVTPRES_DATE_PRESTATION
,SD_MVTPRES.SIGNE * SD_MVTPRES.DUREE SD_MVTPRES_DUREE
,SD_MVTPRES.SIGNE * SD_MVTPRES.NOMBRE SD_MVTPRES_NOMBRE
,SD_MVTPRES.SIGNE * SD_MVTPRES.MONTANT SD_MVTPRES_MONTANT
,SD_MVTPRES.SIGNE SD_MVTPRES_SIGNE
,SD_MVTPRES.UNITE_DUREE SD_MVTPRES_UNITE_DUREE
,SD_MVTPRES.EST_AMBULATOIRE SD_MVTPRES_EST_AMBULATOIRE
,SD_MVTPRES.DO_GENRE_DOC_ID SD_MVTPRES_DO_GENRE_DOC_ID
,SD_MVTPRES.CHAINE_ZONES_SAISIES SD_MVTPRES_CHAINE_ZONES_SAISIE
,SD_MVTPRES.TP_TYPE_MAJO_FACT_CI SD_MVTPRES_TP_TYPE_MAJO_FACT_C
,SD_MVTPRES.TP_TYPE_MAJO_SAL_CI SD_MVTPRES_TP_TYPE_MAJO_SAL_CI
,SD_MVTPRES.TP_CAL_ENT_FACT_ID SD_MVTPRES_TP_CAL_ENT_FACT_ID
,SD_MVTPRES.TP_CAL_ENT_SAL_ID SD_MVTPRES_TP_CAL_ENT_SAL_ID
,SD_MVTPRES.SD_CAS_DOS_INTERV_ID SD_MVTPRES_SD_CAS_DOS_INTERV_I
,SD_MVTPRES.NO_DOCUM_VENTE SD_MVTPRES_NO_DOCUM_VENTE
,SD_MVTPRES.VARIANTE_PERIODE SD_MVTPRES_VARIANTE_PERIODE
,INT_IDROLE.NO_ROLE INT_IDROLE_EMP_NO_ROLE
,INT_IDROLE.ABREGE INT_IDROLE_EMP_ABREGE
,INT_IDROLE.NOM_AFFICHE INT_IDROLE_EMP_NOM_AFFICHE
,INT_IDROLE.INT_IDENT_ID INT_IDROLE_EMP_INT_IDENT_ID
,INT_IDROLE.AD_ADR_ID INT_IDROLE_EMP_AD_ADR_ID
,AS_PROD.REFERENCE_INT_1_PIC AS_PROD_REFERENCE_INT_1_PIC
,AS_PROD.REFERENCE_INT_2_PIC AS_PROD_REFERENCE_INT_2_PIC
FROM SD_MVT_PRESTATION SD_MVTPRES
,AS_PRODUIT AS_PROD
,INT_IDENT_ROLE INT_IDROLE
  WHERE AS_PROD.ID=SD_MVTPRES.AS_PRODUIT_ID and
INT_IDROLE.ID=SD_MVTPRES.INT_ROLE_EMP_ID;
J'utilise le programme Toad, il me retourne très rapidement les premières lignes et quand j'essaie de consulter les derniers enreg. J'arrive généralement sur le message "End of channel communication".

La table SD_MVT_PRESTATION contient un peu plus de 4 millions de lignes.

Comme la vue est créée sur la totalité des lignes, elle prend beaucoup de temps pour se construire et généralement sa construction n'arrive pas a terme.

Voici le plan d'exécution :

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
 
SELECT SD_MVTPRES.STATUS SD_MVTPRES_STATUS 
,SD_MVTPRES.DB_ELEMENT_ID SD_MVTPRES_DB_ELEMENT_ID 
,SD_MVTPRES.ID SD_MVTPRES_ID 
,SD_MVTPRES.SD_MVT_TER_ID SD_MVTPRES_SD_MVT_TER_ID 
,SD_MVTPRES.INT_ROLE_EMP_ID SD_MVTPRES_INT_ROLE_EMP_ID 
,SD_MVTPRES.INT_ROLE_PAT_ID SD_MVTPRES_INT_ROLE_PAT_ID 
,SD_MVTPRES.AS_PRODUIT_ID SD_MVTPRES_AS_PRODUIT_ID 
,SD_MVTPRES.DATE_PRESTATION SD_MVTPRES_DATE_PRESTATION 
,SD_MVTPRES.SIGNE * SD_MVTPRES.DUREE SD_MVTPRES_DUREE 
,SD_MVTPRES.SIGNE * SD_MVTPRES.NOMBRE SD_MVTPRES_NOMBRE 
,SD_MVTPRES.SIGNE * SD_MVTPRES.MONTANT SD_MVTPRES_MONTANT 
,SD_MVTPRES.SIGNE SD_MVTPRES_SIGNE 
,SD_MVTPRES.UNITE_DUREE SD_MVTPRES_UNITE_DUREE 
,SD_MVTPRES.EST_AMBULATOIRE SD_MVTPRES_EST_AMBULATOIRE 
,SD_MVTPRES.DO_GENRE_DOC_ID SD_MVTPRES_DO_GENRE_DOC_ID 
,SD_MVTPRES.CHAINE_ZONES_SAISIES SD_MVTPRES_CHAINE_ZONES_SAISIE 
,SD_MVTPRES.TP_TYPE_MAJO_FACT_CI SD_MVTPRES_TP_TYPE_MAJO_FACT_C 
,SD_MVTPRES.TP_TYPE_MAJO_SAL_CI SD_MVTPRES_TP_TYPE_MAJO_SAL_CI 
,SD_MVTPRES.TP_CAL_ENT_FACT_ID SD_MVTPRES_TP_CAL_ENT_FACT_ID 
,SD_MVTPRES.TP_CAL_ENT_SAL_ID SD_MVTPRES_TP_CAL_ENT_SAL_ID 
,SD_MVTPRES.SD_CAS_DOS_INTERV_ID SD_MVTPRES_SD_CAS_DOS_INTERV_I 
,SD_MVTPRES.NO_DOCUM_VENTE SD_MVTPRES_NO_DOCUM_VENTE 
,SD_MVTPRES.VARIANTE_PERIODE SD_MVTPRES_VARIANTE_PERIODE 
,INT_IDROLE.NO_ROLE INT_IDROLE_EMP_NO_ROLE 
,INT_IDROLE.ABREGE INT_IDROLE_EMP_ABREGE 
,INT_IDROLE.NOM_AFFICHE INT_IDROLE_EMP_NOM_AFFICHE 
,INT_IDROLE.INT_IDENT_ID INT_IDROLE_EMP_INT_IDENT_ID 
,INT_IDROLE.AD_ADR_ID INT_IDROLE_EMP_AD_ADR_ID 
,AS_PROD.REFERENCE_INT_1_PIC AS_PROD_REFERENCE_INT_1_PIC 
,AS_PROD.REFERENCE_INT_2_PIC AS_PROD_REFERENCE_INT_2_PIC 
FROM SD_MVT_PRESTATION SD_MVTPRES 
,AS_PRODUIT AS_PROD 
,INT_IDENT_ROLE INT_IDROLE 
  WHERE AS_PROD.ID=SD_MVTPRES.AS_PRODUIT_ID and 
INT_IDROLE.ID=SD_MVTPRES.INT_ROLE_EMP_ID;
 
call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.01          0          0          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        1      0.03       0.14        215        218          0          25
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        3      0.03       0.16        215        218          0          25
 
Misses in library cache during parse: 1
Optimizer goal: CHOOSE
Parsing user id: 62  (ID_SAFJURA)
 
Rows     Execution Plan
-------  ---------------------------------------------------
      0  SELECT STATEMENT   GOAL: CHOOSE
      0   HASH JOIN
      0    TABLE ACCESS   GOAL: ANALYZED (FULL) OF 'INT_IDENT_ROLE'
      0    TABLE ACCESS   GOAL: ANALYZED (BY INDEX ROWID) OF 
               'SD_MVT_PRESTATION'
      0     NESTED LOOPS
      0      TABLE ACCESS   GOAL: ANALYZED (FULL) OF 'AS_PRODUIT'
      0      INDEX (RANGE SCAN) OF 'SD_MVTPRES_AS_PROD_IDX' (NON-UNIQUE)
Que dois-je faire afin d'accélérer sa construction.

Merci d'avance.