Pourquoi une telle différence énorme dans la performance si je mets mes dates dans la clause WHERE (première requête) ou si je mets mêmes dates en tant que paramètres (deuxième requête)dates codées dur dans la clause WHERE donne des performances plus rapides alors même dates en tant que paramètres?
--------/* Execution time 3 sec*/
select
tblNoteDiaries.DueDate,
col2,
col3
from MyTable
where CAST(tblNoteDiaries.DueDate as date) <= cast(getdate()as date) and cast(tblNoteDiaries.DueDate as date) >= CAST('2017-09-29' as DATE)
--------/* Execution time 10 sec*/
declare @DateFrom datetime = '2017-09-29',
@DateTo datetime = '2017-10-05'
select
tblNoteDiaries.DueDate,
col2,
col3
from MyTable
where CAST(tblNoteDiaries.DueDate as date) >= @DateFrom and cast(tblNoteDiaries.DueDate as date) <= @DateTo
J'ai besoin de cette requête comme une procédure stockée, quelle serait la meilleure approche pour utiliser les paramètres de date sans dégradation des performances?
voyez-vous une différence dans le plan d'exécution? – FLICKER
Renvoi de paramètre le plus probable. Le plan d'exécution vous donnera un indice. –