[英]mysql query - optimizing existing MAX-MIN query for a huge table
我有一個或多或少良好的工作查詢(關於結果),但大約需要45秒的時間來處理。 對於在GUI中顯示數據絕對太長了。
所以,我的要求是找一個更快/有效的查詢(大約幾毫秒的東西就好了)我的數據表中有大約
3000〜2619395
項的東西,還在不斷增加。
架構:
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)
任何幫助/方法/想法都非常感謝。 提前致謝。
添加合適的索引會有所幫助。 2個復合索引將顯着加快處理速度:
ALTER TABLE tbl_name ADD INDEX (error, exportValue);
ALTER TABLE tbl_name ADD INDEX (station, fetchDate);
在3000條記錄上運行的此查詢應該非常快。
意見建議:
由於您的桌子正在快速增長(每隔15分鍾),因此您應該考慮最后一個建議。 可能不需要將詳細的歷史記錄保存在一個地方。 歸檔數據是應在維護過程中完成的過程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.