Bonjour,

Une base 9i sur un serveur W2K3 héberge un progiciel REMEDY.

Je suis confronté à de gros problèmes de performance, lors de l'ouverture d'une session (via client lourd) REMEDY génére un code dynamique dont voici une partie

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
 
SELECT	COUNT(*) 
FROM 	T930 
WHERE 	
			(
				(
					(T930.C1000000079 = 'SGP000000000004'
					) 
				AND 	(' ' = ' '
					)
				) 
			OR 	(
					(' ' = T930.C536871260
					) 
				AND 	(
						(T930.C1000000079 != ' '
						) 
					OR 	(T930.C1000000427 != ' '
						)
					)
				)
			)
Lorsque j'execute cette requete il s'écoule une quinzaine de secondes.

Le plan d'execution montre que l'on effectue un full scan de la table T930 (300.000 enregistrements avec les stats à jour), les index ne sont pas utilisés.

Lorsque je décompose la requête en deux requêtes distinctes l'execution de chaque requête est instantannée et le plan d'execution montre que l'on passe par les index.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
SELECT	COUNT(*) 
FROM 	T930 
WHERE 	
			(
				(
					(T930.C1000000079 = 'SGP000000000004'
					) 
				AND 	(' ' = ' '
					)
				) 
			)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
SELECT	COUNT(*) 
FROM 	T930 
WHERE
				(
					(' ' = T930.C536871260
					) 
				AND 	(
						(T930.C1000000079 != ' '
						) 
					OR 	(T930.C1000000427 != ' '
						)
					)
				)
Je suis en mode CHOOSE et je ne peux pas passer en mode RULES.

Est il possible selon vous d'optimiser cette partie de requête ?

Merci pour votre aide,
Alain