Мне нужно написать запрос, который будет группировать большое количество записей по периодам времени от года к часу.
Мой первоначальный подход состоял в том, чтобы решить периоды процедурно на С#, перебирать каждый из них и запускать SQL для получения данных за этот период, создавая набор данных по мере того, как я иду.
SELECT Sum(someValues)
FROM table1
WHERE deliveryDate BETWEEN @fromDate AND @ toDate
Впоследствии я обнаружил, что могу группировать записи с помощью Year(), Month() Day() и datepart (неделя, дата) и datepart (hh, date).
SELECT Sum(someValues)
FROM table1
GROUP BY Year(deliveryDate), Month(deliveryDate), Day(deliveryDate)
Я обеспокоен тем, что использование datepart в группе приведет к худшей производительности, чем выполнение запроса несколько раз за определенный период времени из-за невозможности использовать индекс в поле datetime так же эффективно; любые мысли относительно того, правда ли это?
Спасибо.