我有一個或多或少好的工作查詢(關於結果),但它需要大約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