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

时间:2012-08-31 14:49:45

标签: database optimization query-optimization

我正在为我工​​作的公司创建一个简单的业务分析应用程序,并且在过去的6年里有一个100mb csv的销售交易文件,我已经将其解析为多个数据库。

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

while(start_date < current_date)
    {
        SELECT SUM(profit), SUM(turnover) FROM sales WHERE date = @date
    }

所以,我每天都会在几十万行的桌面上运行该查询,每天都有6年的顾客。

我总是相信任何可以在数据库中执行的工作都应该 - 这就是为什么我使用SUM查询来累计列。

我可以做出哪些其他优化?目前正在采取......好吧,我无法告诉你,因为它已经在8GB四核服务器上运行了最后一小时,看起来大约在2-3%左右。

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

2 个答案:

答案 0 :(得分:1)

我只运行一次(修改过的)查询并循环遍历结果集。它应该更快。

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
}

答案 1 :(得分:0)

尝试引入汇总表,您将获得每日统计信息。每当您向sales表添加更多数据时,都会更新汇总表[带触发器或应用程序逻辑]。