[OPTIMISATION] Date en tant que variable dans les clauses WHERE
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 :
Code:
1 2
| DECLARE @DateDuJour AS DATETIME
SET @DateDuJour = cast(convert(varchar, GETDATE(),3) as datetime) |
Puis cette variable est réutilisée dans le reste de la procédure comme par ex :
Code:
1 2 3
| SELECT ...
FROM...
WHERE DateReception > @DateDuJour |
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:
1 2 3
| SELECT ...
FROM...
WHERE DateReception > cast(convert(varchar, GETDATE(),3) as datetime) |
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).
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.