Bonjour,
Depuis quelques jours j'essaye d'optimiser des procédures stockées d'une base SQL SERVER 2000, et je m'aperçois que certaines utilisent des variables date comme suit :
Puis cette variable est réutilisée dans le reste de la procédure comme par ex :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 DECLARE @DateDuJour AS DATETIME SET @DateDuJour = cast(convert(varchar, GETDATE(),3) as datetime)
Or en ayant fait des essais sur une base de test, ou je remplaçais @DateDuJour par une date rentrée manuellement ex : '09/09/09 00:00:00', les requêtes étaient moins gourmandes en ressources. J'ai donc essayé de remplacé la variable par son expression directement dans mes requêtes comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT ... FROM... WHERE DateReception > @DateDuJour
Et effectivement après avoir relancé les procédures concernées, celles-ci ont demandé moins de ressources au serveur (Duration et Read inférieurs sur le profiler).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT ... FROM... WHERE DateReception > cast(convert(varchar, GETDATE(),3) as datetime)
Ce gain est appréciable mais je n'arrive pas à comprendre ce phénomène, quelqu'un aurait-il une explication ?
Merci d'avance pour vos réponses.
Partager