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:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
FROM article a
INNER JOIN produit p ON a.id=p.produit
est present dans multitude de requete
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:

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
J'ai un meilleur resultat que si j'execute avec le cluster

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