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 :
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
Une idée ?

Merci beaucoup d'avance !