Ik heb een query in de vorm van:
De tabel draait op een InnoDB engine en heeft een 40M records. Deze query is nu ontzettend traag, maar moet slechts 1 of 2 keer per dag gerunned worden (ik kan daarna de results cachen om de hele dag op een website te tonen).
Vraag: Hoe kan ik deze query sneller laten lopen? (Innodb settings, index op group by column, ...)
Indien er niet direct een degelijke oplossing is, hoe kan ik deze query op low priority laten lopen zodat een eventuele gebruiker van de server geen hoge load merkt op de server?
Google geeft geen eenduidig antwoord, en trial en error duurt vaak een aantal uur op zoveel records...
Edit: Records worden enkel aangevuld (1M nieuwe rows), geen update. 1 a 2 keer per dag, en dus elke keer na update moeten die Averages opnieuw berekend worden.
SQL:
1
2
3
| SELECT param, AVG(p1),AVG(p2),AVG(p3),AVG(p4),AVG(p5),AVG(p6),AVG(p7),AVG(p8) FROM table GROUP BY param |
De tabel draait op een InnoDB engine en heeft een 40M records. Deze query is nu ontzettend traag, maar moet slechts 1 of 2 keer per dag gerunned worden (ik kan daarna de results cachen om de hele dag op een website te tonen).
Vraag: Hoe kan ik deze query sneller laten lopen? (Innodb settings, index op group by column, ...)
Indien er niet direct een degelijke oplossing is, hoe kan ik deze query op low priority laten lopen zodat een eventuele gebruiker van de server geen hoge load merkt op de server?
Google geeft geen eenduidig antwoord, en trial en error duurt vaak een aantal uur op zoveel records...
Edit: Records worden enkel aangevuld (1M nieuwe rows), geen update. 1 a 2 keer per dag, en dus elke keer na update moeten die Averages opnieuw berekend worden.
[ Voor 9% gewijzigd door Tharulerz op 03-04-2012 19:44 ]