Bonjour,

En voulant regarder le plan d'éxécution de ma requête (voir ci-dessous), j'obtiens un avertissement sur la correspondances de hachage :
L'opérateur a utilisé tempdb pour dépasser les données lors de l'éxécution avec le niveau de dépassement 1
(je vous ai joins un imprim écran en pièce jointe).

Je n'arrive pas à comprendre cet avertissement, comment je pourrais optimiser ma requête pour ne plus avoir ce problème ?

Merci d'avance

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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
WITH RecupId AS (SELECT	MAX(dateAjout) AS lastDate, idAdresseTravaux AS id, numeroContrat AS numContrat
				FROM	PrestationContrat
				WHERE	idAgence = 31
				GROUP BY idAdresseTravaux, numeroContrat
				UNION
				SELECT	MAX(dateModification) AS lastDate, idAdresseTravaux AS id, numeroContrat AS numContrat
				FROM	PrestationContrat
				WHERE	idAgence = 31
				GROUP BY idAdresseTravaux, numeroContrat
				UNION
				SELECT	MAX(dateAjout) AS lastDate, idAdresse AS id, numeroContrat AS numContrat
				FROM	Adresse
				WHERE	idAgence = 31
				GROUP BY idAdresse, numeroContrat
				UNION
				SELECT	MAX(dateModification) AS lastDate, idAdresse AS id, numeroContrat AS numContrat
				FROM	Adresse
				WHERE	idAgence = 31
				GROUP BY idAdresse, numeroContrat)
SELECT  c.idAgence, c.numeroContrat
		, CASE c.typeContrat WHEN 0 THEN RTRIM(c.numeroContrat) + ' - F' ELSE RTRIM(c.numeroContrat) + ' - P' END AS numeroContratFormat ,
		c.referenceClient, 
		cv.estValide, 
		c.codeClient, c.nomClient, c.objContrat, c.dateDebut, c.montantHTGlobal, c.estSuspension, c.estTaciteReconduction, c.dateFin,
		dbo.[GetEventContrat] (c.idAgence, c.numeroContrat) AS typeEvent, 
		c.idAgenceClient,
		c.idAdresseTravaux, 
		(at.adresse0 + ISNULL(at.adresse1,' ') + ISNULL(at.adresse2,'')) AS adresseT , 
		cpt.codePostal AS 'cpT', 
		cpt.ville AS 'villeT'
FROM	Adresse at
		INNER JOIN (SELECT	id
					FROM	RecupId AS ri
					WHERE	lastDate = (SELECT MAX(lastDate) FROM RecupId WHERE ri.numContrat = numContrat)) T2
			ON T2.id = at.idAdresse
				AND at.estAdresseTravaux = 1
				AND at.idAgence = 31
		INNER JOIN CodePostalVille AS cpt 
			ON at.idAgenceCodePostalVille = cpt.idAgence 
				AND cpt.idCodePostalVille = at.idCodePostalVille 
		INNER JOIN Contrat c
			ON c.numeroContrat = at.numeroContrat
				AND c.idAgence = at.idAgence
		LEFT JOIN ContratValide cv
			ON cv.idAgence = c.idAGence
				AND cv.numeroContrat = c.numeroContrat
WHERE	estResilie = 0 
ORDER BY c.numeroContrat DESC
Nom : avertissement.jpg
Affichages : 637
Taille : 118,8 Ko