Vielleicht denk ich jetzt auch zu einfach und übersehe etwas, aber was ist mit folgendem Query?
Edit:
Mit einem INDEX auf id, dauert es bei meinen zufälligen 500.000 Datensätzen (1000 verschiedene IDs, 100 verschiedene Namen und Daten) zwischen 0ms und 1ms (ohne Index 70ms). Aber die Zusammensetzung der Daten ist vermutlich eine anderen als bei deinen realen Daten. Und vielleicht hast du noch 20 verschiedene andere Spalten, welche der Abfrage am Bein kleben.
SQL:
SELECT id, name, MIN(datum) AS start_datum, MAX(datum) AS end_datum FROM gruppen
WHERE id=2
GROUP BY id, name
#HAVING start_datum!=end_datum
Edit:
Mit einem INDEX auf id, dauert es bei meinen zufälligen 500.000 Datensätzen (1000 verschiedene IDs, 100 verschiedene Namen und Daten) zwischen 0ms und 1ms (ohne Index 70ms). Aber die Zusammensetzung der Daten ist vermutlich eine anderen als bei deinen realen Daten. Und vielleicht hast du noch 20 verschiedene andere Spalten, welche der Abfrage am Bein kleben.
Zuletzt bearbeitet: