Bonjour,
J'ai un problème avec une requête MySQL qui met de plus en plus de temps à s’exécuter, à mon avis à cause d'un select imbriqué, et ne trouve pas comment l'optimisé.
La requête tape les bases suivantes :
- claim => liste des sinistres
- action => liste des actions sur les sinistres
- user => liste des utilisateurs
- memberClient => liste les clients membre d'un groupe
- noteClient => liste les groupe clients disponible
Le but de la requête est de récupéré une liste des sinistres contenant la dernière action créé dessus (id le plus haut) puis de le trier par date d'action prévu ascendant.
La requête actuelle :
Une idée ?
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 SELECT DISTINCT a.idClaim as sin, b.dateprevue as dateprevue, c.nom_user as nom, CASE WHEN d.codeMemberClient IS NOT NULL THEN e.color_noteClient ELSE 'FFFFFF' END as color FROM memberClient as d right join claim as a on a.clientCode = d.codeMemberClient left join noteClient as e on d.noteMemberClient = e.id_noteClient, action as b, user as c WHERE a.idClaim=b.nsinistrea AND b.dateprevue = ( SELECT b.dateprevue FROM action as b WHERE b.nsinistrea = a.idClaim ORDER BY actionid DESC LIMIT 1 ) AND b.utilisateur=c.id_user AND b.utilisateur IN ("liste des id user") GROUP BY b.nsinistrea ORDER BY b.dateprevue ASC, b.actionid DESC
Merci beaucoup d'avance !
Partager