Bonjour, j'ai une requête très couteuse en temps, et je sollicite votre aide pour la rendre plus simple si possible. Je suis pas très bon jointure.
Sachant que j'ai déjà mis en place des index et fait un dbms-stat sur la base.

Les index existants sont:
- HISTORIQUE.HIS_AFFAIRE_W4_ID
- COMMENTAIRE.HIS_ID
- La table COMMENTAIRE possède une clé étrangère sur HISTORIQUE.HIS_ID.
- HISTORIQUE.HIS_ID est la clé primaire de HISTORIQUE

Voici la requête:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
SELECT  HISTORIQUE.HIS_ID, HISTORIQUE.ACT_ID, HISTORIQUE.HIS_ACTION, ....., COMMENTAIRE.COM_ORDRE, COMMENTAIRE.COM_TEXTE, COMMENTAIRE.HIS_ID 
FROM HISTORIQUE  
INNER JOIN 
  (SELECT MAX(HISTORIQUE.HIS_ID) ID_MAX FROM HISTORIQUE WHERE HISTORIQUE.HIS_AFFAIRE_W4_ID IN ('40653','88954','103077','38286',....) OR HISTORIQUE.HIS_AFFAIRE_W4_ID IN ('37768','83857','36898','39025','70083','39788','62566','36752','30372',...) GROUP BY HIS_AFFAIRE_W4_ID) 
DERNIER_COMMENTAIRE ON HISTORIQUE.HIS_ID=DERNIER_COMMENTAIRE.ID_MAX 
 
  LEFT OUTER JOIN COMMENTAIRE ON COMMENTAIRE.HIS_ID=HISTORIQUE.HIS_ID WHERE HISTORIQUE.HIS_AFFAIRE_W4_ID IN ('40653','88954','103077','38286',...) OR HISTORIQUE.HIS_AFFAIRE_W4_ID IN ('37768','83857','36898','39025','70083','39788','62566','36752',...);
Désolé pour la lisibilité, mais je ne peux guère faire mieux.

D'avance merci