我有一个或多或少良好的工作查询(关于结果)但是需要大约45秒来处理。这对于在GUI中呈现数据来说肯定太长了
所以我的要求是找到一个更快/更有效的查询(大约几毫秒的东西会很好)
我的数据表有 3000 ~2,619,395个条目,并且仍在增长。
架构:
num | station | fetchDate | exportValue | error
1 | PS1 | 2010-10-01 07:05:17 | 300 | 0
2 | PS2 | 2010-10-01 07:05:19 | 297 | 0
923 | PS1 | 2011-11-13 14:45:47 | 82771 | 0
解释
工作查询:
select
YEAR(fetchDate), station, Max(exportValue)-MIN(exportValue)
from
registros
where
exportValue > 0 and error = 0
group
by station, YEAR(fetchDate)
order
by YEAR(fetchDate), station
输出:
Year | station | Max-Min
2008 | PS1 | 24012
2008 | PS2 | 23709
2009 | PS1 | 28102
2009 | PS2 | 25098
我的想法:
附加信息:
我在JAVA应用程序中使用该查询。这意味着,如有必要,可以对结果集进行一些后处理。 (JPA 2.0)
非常感谢任何帮助/方法/想法。提前谢谢。
答案 0 :(得分:1)
添加合适的索引会有所帮助。 2个复合指数将显着加快速度:
ALTER TABLE tbl_name ADD INDEX (error, exportValue);
ALTER TABLE tbl_name ADD INDEX (station, fetchDate);
答案 1 :(得分:0)
在3000条记录上运行的查询应该非常快。
建议:
由于您的桌子快速增长(每15分钟一次),您应该考虑最后一个建议。可能没有必要在一个地方保留详细的历史记录。存档数据是应该作为维护的一部分完成的过程。