1 pièce(s) jointe(s)
Optimisation requête SQL 2
Bonjour,
je souhaiterais obtenir pour un client précis toutes lignes d'un BL pour lequel l'état du lancement n'est pas soldé ou annulée et il n'y a pas de commande (CDE_ID=0).
Voici la requête :
Code:
1 2 3 4 5
| SELECT NO_Offre
FROM
((BL_LIGNE BLL INNER JOIN BL_ENTETE BLE ON BLE.LISTENOBL_ID=BLL.LISTENOBL_ID and BLE.CLIENT_ID=433)
INNER JOIN LANCEMENT LCT ON BLL.LCT_ID=LCT.LCT_ID and LCT.ETAT_ID<>2 AND LCT.ETAT_ID<>5 and LCT.CDE_ID=0)
INNER JOIN OFFRE OFR ON LCT.OFR_ID=OFR.OFR_ID |
J'obtiens 15 secondes de temps d'exécution.
J'ai vérifier que tous les indexes soient bien définis.
La requête me retourne 1 seule ligne.
Si j'enlève la condition LCT.CDE_ID=0 le temps est de <1s.
De même si j'enlève la table des offres le temps est d'environ 2s.
Qu'est qui ne va pas? Y-a-t-il un moyen de réduire ce temps de 15s?
J'ai fait la requête sur firebird 1.5. (pas encore près pour la 2.1...)
Vous trouverez le diagramme en pièce jointe.