Ich habe hier eine Verständnisfrage:
SELECT users.name, (SELECT MAX(id) FROM photos WHERE user_id = a.user_id) AS letztes_foto FROM users, photos WHERE photos.user_id = users.user_id GROUP BY users.name
Irgendwie dauert diese Abfrage trotz optimaler Verwendung von Indexen arschig lang.
habe Alternativ auch noch folgendes probiert:
SELECT users.name, (SELECT id FROM photos WHERE user_id = a.user_id ORDER BY datum DESC LIMIT 1) AS letztes_foto FROM users, photos WHERE photos.user_id = users.user_id GROUP BY users.name
Das dauert aber genauso lang.
Superschnell hingegen ist:
SELECT users.name, (SELECT id FROM photos WHERE user_id = a.user_id ORDER BY datum DESC LIMIT 1) AS letztes_foto FROM users, photos LIMIT 10
Was ist hier los?
Sinn und Zweck:
Ich möchte alle User anzeigen, die ein Foto haben. Dann brauche ich noch die ID des aktuellsten Fotos.
Das Problem liegt ganz offensichtlich an GROUP BY. Ich verstehe nur nicht, WARUM?