Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]10933[/thread]

Inner Join & Subselects



<< >> 1 Eintrag, 1 Seite
Froschpopo
 2007-11-30 23:20
#103341 #103341
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Ich habe hier eine Verständnisfrage:

Code: (dl )
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:
Code: (dl )
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:
Code: (dl )
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?
<< >> 1 Eintrag, 1 Seite



View all threads created 2007-11-30 23:20.