我需要编写一个查询,按年度到小时的时间段对大量记录进行分组.
我最初的方法是在C#中以程序方式决定周期,迭代每个周期并运行SQL以获取该周期的数据,随时构建数据集.
SELECT Sum(someValues)
FROM table1
WHERE deliveryDate BETWEEN @fromDate AND @ toDate
Run Code Online (Sandbox Code Playgroud)
我后来发现我可以使用Year(),Month()Day()和datepart(week,date)和datepart(hh,date)对记录进行分组.
SELECT Sum(someValues)
FROM table1
GROUP BY Year(deliveryDate), Month(deliveryDate), Day(deliveryDate)
Run Code Online (Sandbox Code Playgroud)
我担心的是,由于无法有效地使用datetime字段上的索引,因此在group by中使用datepart会导致比在一段时间内多次运行查询更糟糕的性能; 有关这是否属实的任何想法?
谢谢.