Database 我可以应用哪些优化来加速此查询?
我正在为我工作的公司创建一个简单的业务分析应用程序,它有一个100mb的csv文件,记录了过去6年的销售交易,我已经将该文件解析到许多数据库中 我想在应用程序中显示的一个数字是每天每个客户的营业额和利润,因此我有一个while循环,如下所示: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 } 所以,我在一个
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
}
这就是我计划做的更新。我可能应该在我最初的问题中解释一下——实际问题是关于如何优化和加速初始查询,因为它需要花费驴子数年的时间日期栏上有索引吗?