Bonjour,


Je surveille actuellement une instance SQL SERVER 2000 EE SP4 avec le profiler. Je remarque qu'une procédure stockée exécutée est assez gourmande en ressources (nb de reads > 100 000) !!!. Cette procédure reçoit un paramètre de type tinyint en entrée, pour pouvoir l'optimiser la requête qu'elle contient j'ai exécute la requête suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
DECLARE @input TINYINT
SET @INPUT = ...
SELECT (traitement prenant en compte @INPUT identique à celui de la procédure)
GO
exec procedure_gourmande @INPUT= ...
Si je regarde les plans d'exécution j'observe que la requête avec le SELECT et l'exécution de la procédure stockée donne des plans d'exécutions différents
et si je regarde le profiler :
SELECT => Nb read = 10 000
Procédure stockée => NB read > 100 000

Pouvez-vous m'aider ? Je ne comprends pas pourquoi la procédure stockée et le SELECT on des plans d'exécution différents et pourquoi le SELECT est beaucoup moins gourmand (en term de read).

Merci d'avance.
Cdlt.