Bonjour,

Je suis sous Informix 9.4 et j'aimerais optimiser une requête qui prend énormément de temps (a cause de la volumétrie de certaines tables qui contiennent plusieurs millions de lignes).

Voici la requête :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
SELECT DECODE (EQUIP.x3011_1_mychars[9], 'L', PCP.x3029_8_cmequip, 'D', CAST(EQUIP.X3011_1_mychars[10,18] AS INTEGER), 'F', CAST(EQUIP.X3011_1_mychars[10,18] AS INTEGER), -1), 
DECODE (EQUIP.x3011_1_mychars[9], 'L', PCP.x3010_2_mychars[2,3], 'D', EQUIP.X3011_1_mychars[20,21], 'F', EQUIP.X3011_1_mychars[20,21], "")
FROM SUBPOS 
INNER JOIN UNLOADTABLE ON 
  SUBPOS.x3040_2_mychars = UNLOADTABLE.Stripename
INNER JOIN MAINPOS 
  ON SUBPOS.x3040_9_orrmainpos = MAINPOS.id 
    AND MAINPOS.X3021_2_mychars[1,3] = UNLOADTABLE.node
INNER JOIN PCP ON PCP.x3010_15_mychars[1,8] = SUBPOS.id
INNER JOIN EQUIP ON PCP.x3029_8_cmequip = EQUIP.id
Les performances sont dégradées à cause de la jointure en rouge qui va comparer toutes les sous-chaînes de PCP.x3010_15_mychars avec tous les champs id de la table SUBPOS

Auriez-vous une solution sans utiliser de curseur ?

Merci d'avance,