DateDiff
очень быстро ... Ваша проблема в том, что вы запускаете его для значения столбца таблицы базы данных, поэтому обработчик запросов должен запускать функцию для каждой строки таблицы, даже если для этого столбца был индекс , Это означает, что он должен загрузить всю таблицу с диска.
Вместо этого используйте функцию dateAdd
в текущую дату и сравните столбец таблицы базы данных с результатом этого единственного вычисления. Теперь он запускается DateAdd()
только один раз и может использовать индекс (если он существует) для загрузки только тех строк, которые соответствуют критерию предиката.
Where a.DateValue > DateAdd(day,-3,getdate())
выполнение этого таким образом делает ваш предикат запроса SARG-способным