bonjour,
voila plus jour que je galère sur l'impossibilité de me débarrasserd'un "TABLE ACCESS FULL" !!
J'ai une table comme suit les documents XML font ~30ko.
Plein d'index de ce genre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 CREATE TABLE XYZREGISTRE of XMLType XMLTYPE store AS OBJECT RELATIONAL XMLSCHEMA "http://X.Y.Z/projet/ABC/schema/xyzmessage.xsd" ELEMENT "xyzmessage" /
si je fait un requete que ne recupère que 1 champs (indexé) par de pb.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 CREATE INDEX idx_xyzreg_1 ON XYZREGISTRE (extractvalue(object_value,'/xyzmessage/META_DATA/md_hopcreator')) TABLESPACE INDX;
par contre comment peut on optimiser cette requete :
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT extract(object_value,'/xyzmessage').getClobVal() FROM XYZREGISTRE WHERE existsNode(object_value,'/xyzmessage[NOID="x007tzg4263') = 1;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 ----------------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | TQ |IN-OUT| PQ Distrib | ----------------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 2548 | 2 (0)| 00:00:01 | | | | | 1 | PX COORDINATOR | | | | | | | | | | 2 | PX SEND QC (RANDOM)| :TQ10000 | 1 | 2548 | 2 (0)| 00:00:01 | Q1,00 | P->S | QC (RAND) | | 3 | PX BLOCK ITERATOR | | 1 | 2548 | 2 (0)| 00:00:01 | Q1,00 | PCWC | | |* 4 | TABLE ACCESS FULL| XYZREGISTRE | 1 | 2548 | 2 (0)| 00:00:01 | Q1,00 | PCWP | | 4 - filter("XYZREGISTRE"."SYS_NC00017$"='x007tzg4263')
pour eviter un access full.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Statistiques ---------------------------------------------------------- 37 recursive calls 3 db block gets 5206 consistent gets 0 physical reads 628 redo size 1065 bytes sent via SQL*Net to client 674 bytes received via SQL*Net from client 5 SQL*Net roundtrips to/from client 1 sorts (memory) 0 sorts (disk) 1 rows processed
note :: le .getClobVal() est OBLIGATOIRE.
merci de votre aide !!
Partager