MySQL-Performance nach Update mindestens Faktor 10 langsamer
bearbeitet von Rolf BHallo Klaus1,
> je Person und Monat, jeweils für die letzten 12 Monate. D.h. es geht nur um die Anzahl. Also bei 5 Personen, immer 2 Abfragen je Monat, 12 Monate = 120 Abfragen.
Siehste, wusste ich es doch. Das geht in einem Statement. Mit GROUP BY.
~~~sql
SELECT Erfasser, SUBSTR(erstelltAm, 1, 7) as Monat, COUNT(*) as Anzahl
FROM aufgaben
WHERE erstelltAm >= '2020-07-01' erstelltAm < '2021-08-01'
GROUP BY person, monat
ORDER BY person, monat
~~~
liefert pro Erfasser und Monat die Anzahl der letzten vollständigen 12 Monate. Ich hab's mit >= und < gemacht statt mit BETWEEN, weil ich so keine Datumsarithmetik für den Monatsletzten brauche (die zwar keine Raketenwissenschaft ist, aber trotzdem Arbeit).
Irgendwas fehlt jetzt noch, du schriebst "2 Abfragen pro Monat", d.h. da fehlt noch irgend ein Merkmal. Aber das kenne ich nicht, davon steht hier nichts. Es ist darum Hausaufgabe für Dich 😉
Wenn erstelltAm ein Datumsfeld wäre, würde ich mit DATEPART Jahr und Monat rausholen und nach Erfasser, Jahr und Monat gruppieren.
Alles in ein Array, je Erfasser einen Kuchen draus backen und genießen...
_Rolf_
--
sumpsi - posui - obstruxi
MySQL-Performance nach Update mindestens Faktor 10 langsamer
bearbeitet von Rolf BHallo Klaus1,
> je Person und Monat, jeweils für die letzten 12 Monate. D.h. es geht nur um die Anzahl. Also bei 5 Personen, immer 2 Abfragen je Monat, 12 Monate = 120 Abfragen.
Siehste, wusste ich es doch. Das geht in einem Statement. Mit GROUP BY.
~~~sql
SELECT Erfasser, SUBSTR(erstelltAm, 1, 7) as Monat, COUNT(*) as Anzahl
FROM aufgaben
WHERE erstelltAm >= '2020-07-01' erstelltAm < '2021-08-01'
GROUP BY person, monat
ORDER BY person, monat
~~~
liefert pro Erfasser und Monat die Anzahl der letzten vollständigen 12 Monate. Ich hab's mit >= und < gemacht statt mit BETWEEN, weil ich so keine Datumsarithmetik für den Monatsletzten brauche (die zwar keine Raketenwissenschaft ist, aber trotzdem Arbeit).
Wenn erstelltAm ein Datumsfeld wäre, würde idh mit DATEPART Jahr und Monat rausholen und nach Erfasser, Jahr und Monat gruppieren.
Alles in ein Array, je Erfasser einen Kuchen draus backen und genießen...
_Rolf_
--
sumpsi - posui - obstruxi