Bonjour a tous
(oracle 11g -- windows 2003)
j'ai un doute, soit 2 tables, article et produit. Ces 2 tables possedent un champs pour le JOIN, dans la tabla article c'est ID varchar2(8) et dans la table produit c'est PRODUIT varchar2(8) aussi.
le code:
est present dans multitude de requete
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 FROM article a INNER JOIN produit p ON a.id=p.produit
D'ou l'idée de creer un cluster:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 create cluster artprod(id VARCHAR2(8 CHAR)); create index idx_artprod on cluster artprod; CREATE TABLE productos_cls CLUSTER artprod (id) AS SELECT * FROM productos; CREATE TABLE articulos_cls CLUSTER artprod (producto) AS SELECT * FROM articulos;
Si j'execute ceci:
J'ai un meilleur resultat que si j'execute avec le cluster
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 SQL> select /*+ gather_plan_statistics */ count(1) from articulos a 2 inner join productos p on a.PRODUCTO=p.ID; Plan de Ejecuci¾n ---------------------------------------------------------- Plan hash value: 175009287 ------------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | ------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | 18 | 315 (12)| 00:00:04 | | 1 | SORT AGGREGATE | | 1 | 18 | | | | 2 | NESTED LOOPS | | 367K| 6467K| 315 (12)| 00:00:04 | | 3 | INDEX FAST FULL SCAN| IDX_ARTICULOS_PRODUCTO | 367K| 3233K| 281 (1)| 00:00:04 | |* 4 | INDEX UNIQUE SCAN | PK_PRODUCTOS | 1 | 9 | 0 (0)| 00:00:01 | ------------------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 4 - access("A"."PRODUCTO"="P"."ID") EstadÝsticas ---------------------------------------------------------- 1 recursive calls 0 db block gets 2488 consistent gets 916 physical reads 0 redo size 547 bytes sent via SQL*Net to client 524 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 1 rows processed
Je comprend pas, ça devrait ameliorer les perfs n'est ce pas?
Les 2 tables sont bien candidates pour un cluster ?
Des pistes?
D'avance merci
Partager