Bonsoir a tous !

Je vais essayer de vous exposer mon problème le plus clairement possible :

Certaines de mes procédures stockées ont un temps de résolution incohérent au possible ...

J'ai une requete avec la clause Where suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
AnneeRef.Designation = @Annee AND
	Structures.NumRegion = @NumReg AND 
	Structures.NumDep = @NumDep AND
	Structures.NumStruct = @NumClub AND
	Individus.ID >= @IDMin AND Individus.ID <= @IDMax  )
cette requete me renvoit 1545 lignes (quand elle ne pars pas en timeout) et a un temps de résolution d'environ 35 secondes (ce qui est énorme)...

J'ai ensuite remarqué que des requetes tres similaires a celle-ci avaient un temps de résolution normal, la seule différence étant un test supplémentaire dans la clause WHERE .

J'ai donc ajouté dans le WHERE de ma requete incriminée un test qui renvoit toujours TRUE :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
AnneeRef.Designation = @Annee AND
	Structures.NumRegion = @NumReg AND 
	Structures.NumDep = @NumDep AND
	Structures.NumStruct = @NumClub AND
	Individus.ID >= @IDMin AND Individus.ID <= @IDMax  ) AND  HistoIndiv.IDTypeIndiv <> 9)
et c'est la que cela devient abbérrant : Ma requete renvoit le meme nombre de lignes (1545) , ce qui est normal puisque ma nouvelle clause renvoit toujours TRUE, mais celle-ci est résolue en moins d'une seconde !

Logiquement rajouter un test a ma SP devrait plutot la ralentir étant donné que ce test n'élimine aucune ligne ? mais dans ce cas elle est résolue plus de 30 fois plus vite !!!

Si quelqu'un a déja rencontré ce genre de problème ou a une petite idée sur le sujet il est le bienvenu .....


Merci d'avance