Database 我可以应用哪些优化来加速此查询?

Database 我可以应用哪些优化来加速此查询?,database,optimization,query-optimization,Database,Optimization,Query Optimization,我正在为我工作的公司创建一个简单的业务分析应用程序,它有一个100mb的csv文件,记录了过去6年的销售交易,我已经将该文件解析到许多数据库中 我想在应用程序中显示的一个数字是每天每个客户的营业额和利润,因此我有一个while循环,如下所示: while(start_date < current_date) { SELECT SUM(profit), SUM(turnover) FROM sales WHERE date = @date } 所以,我在一个

我正在为我工作的公司创建一个简单的业务分析应用程序,它有一个100mb的csv文件,记录了过去6年的销售交易,我已经将该文件解析到许多数据库中

我想在应用程序中显示的一个数字是每天每个客户的营业额和利润,因此我有一个while循环,如下所示:

while(start_date < current_date)
    {
        SELECT SUM(profit), SUM(turnover) FROM sales WHERE date = @date
    }
所以,我在一个每天有几十万行的表上运行这个查询,这是6年来每天有客户的次数

我总是相信任何可以在DB中执行的工作都应该是——这就是为什么我使用SUM查询来合计列

我还可以进行哪些其他优化?就目前而言。。。好吧,我不能告诉你,因为它已经在一个8GB的四核服务器上运行了一个小时了,看起来它大约有2-3%


我使用的是SQL Server Compact Edition,它是C/.NET中的一个winforms应用程序,但db显然是这里的瓶颈。

尝试引入汇总表,在这里可以获得每日统计数据。每当您向sales表中添加更多数据时,请[使用触发器或应用程序逻辑]更新该摘要表。

我只会运行此修改后的查询一次,并在结果集中循环。应该快得多

SELECT 
    customer, date, SUM(profit), SUM(turnover) 
FROM 
    sales 
WHERE 
    date < current_date 
GROUP BY 
    customer, date
ORDER BY
    customer, date

for each (row in resultset) {
    //process customer/date
}

这就是我计划做的更新。我可能应该在我最初的问题中解释一下——实际问题是关于如何优化和加速初始查询,因为它需要花费驴子数年的时间日期栏上有索引吗?