Hallo,
Szenario: Ich möchte eine Liste aller Benutzer erstellen und zu jedem Benutzer wissen, wieviele Artikel er geschrieben hat und wieviele Freunde er hat ...
SELECT *,
-- benötigst Du wirklich alle Spalten aus der Tabelle benutzer?
(SELECT count() FROM FRIENDS f WHERE b.uid = f.uid) AS FRIENDS,
(SELECT count() FROM ARTIKEL a WHERE b.uid = a.uid) AS ARTIKEL,
FROM BENUTZER b
> ODER ich hole alle Benutzer raus, loope darüber und führe für jeden Benutzer die beiden Subselects aus.
das ist höchstwahrscheinlich deutlich langsamer.
> Welche der beiden Arten ist denn am schnellsten bzw. empfehlenswertesten
EXPLAIN befragen, messen, optimieren, erneut EXPLAIN befragen, erneut messen ...
> oder gibt es noch eine andere Möglichkeit den SQL aufzubauen - ich hab da an JOINs gedacht, aber dafür hab ich einfach kein Händchen.
Freundliche Grüße
Vinzenz