Я в целом согласен с @Justin. Один из способов ускорить это - запрос, основанный на этой идее:
SELECT
datepart(yy, TranDate) Year
,datepart(mm, TranDate) Month
,datepart(dd, TranDate) Day
,count(*)
from TranTable
where TranDate between @Start and @Stop
group by
datepart(yy, TranDate) -- Year
,datepart(mm, TranDate) -- Month
,datepart(dd, TranDate) -- Day
order by
datepart(yy, TranDate) -- Year
,datepart(mm, TranDate) -- Month
,datepart(dd, TranDate) -- Day
Вам придется изменить это для вашей системы и требований.
Настройка отдельной таблицы, которая обновляется каждый день (или около того), является стандартной тактикой хранения данных. Это может быть полезно, если вы не хотите, чтобы «отчетные» запросы блокировали вашу транзакционную систему, или если вам нужны таблицы, специально предназначенные для поддержки таких запросов (для производительности, обычно). Но если
Это внутреннее приложение, поэтому оно не будет видеть тысячи запросов
минуту.
тогда боевой дом звучит как перебор.