MySQL: Lücken bei Gruppierung nach Tagen auffüllen

Status
Dieses Thema wurde gelöst! Zur Lösung gehen…
Update:
1. Inzwischen habe ich die Lösung für das Problem mit der virtuellen Spalte und dem Index gefunden, und zwar hier:
[MDEV-11553] Can't restore a PERSISTENT column that uses DATE_FORMAT() - Jira
Benutzt man DATE_FORMAT kann die locale ins Spiel kommen und die Sache inkonsistent machen. Lösung indem man die Locale explizit angibt, z. B.
Code:
ALTER TABLE visits ADD COLUMN datestr varchar(10) AS (DATE_FORMAT(visit_date, '%Y-%m-%d', 'de-DE')) VIRTUAL;
2. Man kann jedoch das Ganze umgehen, indem man durchgängig, auch in der temp. Tabelle, DATETIME benutzt und dann mit DATE() auf das Datum reduziert. Dadurch konnte ich die Verarbeitungszeit um mehr als den Faktor 10 verringern, siehe hier:
MySQL: Optimize left join on formatted date
 
Noch ein Update:
Die Leute bei Stackoverflow haben es echt drauf: Da ist jetzt einer mit dieser minimalen Version heraus gekommen, die genau so gut funktioniert:
Code:
SELECT t.t_date, COUNT(v.id)
   FROM temp_dates_2 t
      LEFT JOIN visits v ON DATE(v.visit_date) = t.t_date
   GROUP BY t.t_date
 
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…
Zurück