Rolf b: mysql: Nach Datumswerten gruppieren / so siehts gut aus

Beitrag lesen

Schön :)

Ob der DATEDIFF bei der genannten Table-Größe performant ist, müsste man aber nochmal überlegen. Er muss ja in der access-Tabelle für JEDEN Datensatz der Table die FROM_UNIXTIME(last) Konvertierung und den DateDiff durchführen. Bei mehreren Millionen Zeilen ist das nicht unbedingt fix. Und ob er bei Einsatz einer solchen Funktion einen möglicherweise vorhandenen Index auf die last Spalte nutzen kann, weiß ich auch nicht. Dazu müsstest Du einen EXPLAIN auf die Query machen. Ich guck mir das im MySQL selbst noch mal an.

Ich weiß nicht, wie du das SQL aufrufst. Wenn es aus PHP oder einer anderen Programmiersprache heraus erfolgt, solltest Du Dir den Unix-Timestamp für "14 Tage vor heute um Mitternacht" dort einmalig berechnen und diesen Wert direkt mit der last-Spalte vergleichen.

Wenn die slow-Tabelle relativ klein ist, musst Du da wohl nichts machen. Du kannst aber auch da das Grenzdatum vorberechnen und in die Query einsetzen.

Ob es für die Laufzeit der Query etwas ausmachst, müsstest Du testen. Das kannst Du ohne zu programmieren, indem Du statt des DATEDIFF eine fixe Abfrage last >= 1473717600 (das ist der 13.9.) einsetzt. In der slow-Tabelle müsstest Du wohl Erstelldatum >= '2016-09-13' schreiben.

Rolf