Bonjour,

Je poste ce message afin de vous soumettre un problème de performance sur une base Oracle (9.2.0.7 ) utilisé par un soft nommé Aspentech.

Les requetes sont réalisés via un appel WebService, proprietaire de la solution Aspentech, et nous n'avons pas la main sur le code source et des appels réalisés, nous sommes donc dans l'impasse de ce côté.
Nous devons donc optimiser les indexs et les paramètres oracle (mémoire,..) pour répondre au mieux sur les appels effectués.

J'ai recuperé une requete qui est réalisée par ce soft (non modifiable et la plus souvent exécutée):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT DISTINCT batch_id FROM batches WHERE area_id = 3 AND  ( exists ( SELECT 
batch_id FROM CHAR_BATCH_DATA WHERE CHAR_BATCH_DATA.batch_id = batches.batch_id 
AND CHAR_BATCH_DATA.subbatch_id = 1203 AND parent_char_inst_path_id = 0 AND 
char_id = 107 AND char_inst > 0 AND (latest_action < 3 OR latest_action > 4) 
AND char_value = '19522')) AND  ( exists ( SELECT batch_id FROM CHAR_BATCH_DATA 
WHERE CHAR_BATCH_DATA.batch_id = batches.batch_id AND 
CHAR_BATCH_DATA.subbatch_id = 1203 AND parent_char_inst_path_id = 0 AND 
char_id = 103 AND char_inst > 0 AND (latest_action < 3 OR latest_action > 4) 
AND char_value = '038-CS100')) AND  ( exists ( SELECT batch_id FROM CHAR_BATCH_DATA 
WHERE CHAR_BATCH_DATA.batch_id = batches.batch_id AND CHAR_BATCH_DATA.subbatch_id = 1203 
AND parent_char_inst_path_id = 0 AND char_id = 98 AND char_inst > 0 AND 
(latest_action < 3 OR latest_action > 4) AND char_value = '2012')) 
ORDER BY batches.batch_id   ;
Nous aimerions créer un ou des indexs qui pourraient nous permettre de gagner en performance, pour cela je vous fournit quelques informations complémentaires:

- La table CHAR_BATCH_DATA comprend 36 millions de lignes (environ)et la table BATCHES environ 850000 lignes
- Voici l'occurence des valeurs pour les champs appelés sur la table char_batch_data :

batch_id - 36000000 (environ)
char_value - 871147
subbatch_id - 16697
char_id - 392
char_inst - 47
latest_action - 2
parent_char_inst_path_id - 0

Quelqu'un aurait une idée sur le type d'indexd et les champs utilisés pour obtenir de meilleures performances?

Aujourd'hui la situation est compliquée car beaucoup de traitement tournent au quotidien et les applications clientes ne repondent plus dans des delais acceptables
Si vous désirez des infos supplémentaires, je vous les fournit avec plaisir.