我有一个或多或少好的工作查询(关于结果),但它需要大约45秒的时间来处理。对于在GUI中显示数据来说,这肯定太长了。
所以我的要求是找到一个更快/有效的查询(大约几毫秒的东西会很好) 我的数据表有一些东西在〜2,619,395条目,并且仍在增长。mysql查询 - 优化现有的最大 - 最小查询的一个巨大的表
模式:
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
说明
- 的exportValue总是递增
- 的exportValue代表我的情况下,实际的绝对值
- 有10个站
- 每〜 15分钟将10个新条目写入表
- 错误仅仅是一个合适的工作站
工作查询的指标:
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
我就可以了想法:
- 写几个用诸如'在2008-01-01和2008-01-02之间“获取MIN(exportValue)以及在2008-12-30和2008-12-31之间获取MAX(exportValue) - 问题:许多查询和在指定的时间范围内没有数据的问题(不保证会有数据)
- 仅限使用MIN(fetchDate)命令将结果集限制到我的10个工作站 - 问题:也需要很长时间来处理查询
附加信息:
我用在Java应用程序中查询。这意味着,如果需要,可以对结果集进行一些后处理。 (JPA 2.0)
任何帮助/方法/想法都非常赞赏。提前致谢。
感谢这个创建索引的好提示。我用谷歌来找到更多的信息 - > http://www.sitepoint.com/optimizing-mysql-application(如果有人对它感兴趣)。我的查询现在处理约5秒钟。不幸的是,只有当使用phpMyAdmin的sql控制台,而不是使用JPA 2.0处理来自Java的查询时:/(但我会看一下) – RonH