Salut,

J'ai un petit souci avec une de mes requetes qui est un peu longues à s'executer.

Bon alors vla la requete en question :

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
 
SELECT 	P.`idproduit`, 
			CASE 
				WHEN P_desc.`pourcentage` = - 1 AND P_desc.`prix_barre` = - 1
				THEN P_desc.`prix_ht` 
				ELSE 
				CASE 
					WHEN P_desc.`pourcentage` != - 1
					THEN P_desc.`prix_ht` - ( (P_desc.`pourcentage` * P_desc.`prix_ht` ) / 100 ) 
					ELSE P_desc.`prix_barre` 
				END 
			END 
			AS `test` 
			, P_desc.`prix_barre` 
			, P_desc.`prix_ht` 
	FROM 	`produit` P, `produit_famille` P_f , `produit_description` P_desc , `marque` M
	WHERE 	P_desc.`produit_idproduit` = P.`idproduit` 
	AND 	P_f.`idproduit` = P_desc.`produit_idproduit`
	AND 	P_f.`idproduit` = P.`idproduit`
	AND 	P_f.`idfamille` = '29'
	AND		M.`idmarque` = P_desc.`idmarque`
	AND 	P.`idproduit` 
		= (
			SELECT 
				CASE 
				WHEN SUM( S.`nbr_produit` ) >0
				THEN S.`idproduit` 
				END AS `idproduitstock` 
			FROM 	`stock` S, `boutique` B
			WHERE 	S.`idboutique` = B.`idboutique` 
			AND 	B.`internet` = 'true'
			AND		S.`idproduit` = P.`idproduit`
		)
	GROUP BY  P_desc.`couleur` , P.`idgroupe`
ORDER BY P_desc.`titre` ASC

Après quelques essais ect j'en ai déduit que ma requete ralentissez à cause de cette contrainte :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
	AND 	P.`idproduit` 
		= (
			SELECT 
				CASE 
				WHEN SUM( S.`nbr_produit` ) >0
				THEN S.`idproduit` 
				END AS `idproduitstock` 
			FROM 	`stock` S, `boutique` B
			WHERE 	S.`idboutique` = B.`idboutique` 
			AND 	B.`internet` = 'true'
			AND		S.`idproduit` = P.`idproduit`
		)
Donc en faites j'aimerais le remplacer par quelque chose de plus performatn... Mais je ne sais pas quoi..


Merci par avance