我有一张按品牌列出广告活动的表格。每个操作都由一个条目记录,如下面驱动器文件夹中的excel文件所示。表中大约有7mil记录。我运行了几个运行良好的查询,但我面临一个具体的报告问题。此报表按广告支出总额列出客户(excel文件中的l列)并对其进行排名。如果设置的日期范围介于两个月到两年之间,则生成此报表大约需要一分钟。
下面是查询的副本
select customer_id, sum(value) as value
from `data`
where ((`date` >= '2019-01-01' and `date` <= '2019-12-31'))
group by `customer_id`
order by `value` desc, `customer_id` asc;
如果设置的日期范围介于2个月到两年之间,则生成此报表大约需要一分钟。如果我选择的日期范围为一个月或更短,则需要不到3秒的时间。
我需要在不到10-15秒的时间内处理这个查询。我们试图想出一些想法,比如在数据库中创建一个新表,特别是对于这个查询,但是当我们看到仍然需要保留所有日期记录时,它撞到了墙,因此我们无法在表中对结果进行分组。
我们真的愿意接受任何能让这个查询更快的想法,包括数据库更改。
下面是指向文件夹的链接,其中包含db结构的副本和从包含所有数据的数据表导出的示例数据集。
驱动器文件夹
1条答案
按热度按时间r8xiu3jd1#
您应该对查询条件所必需的字段建立索引。在这种情况下:
还应避免将日期存储为文本。使用
DATETIME
如果可以的话。