Ilja: Performanter SQL

Beitrag lesen

moin,

So würde ich es machen:

select count(distinct f.uid) as Friends
          count(distinct a.uid) as Artikel
           from Benutzer b
left outer join FRIENDS f on (b.uid = f.uid)
left outer join FRIENDS a on (b.uid = a.uid)
[/code]

So hast du ohne Probleme zugriff auf alle Tabellen.
Und da alle Uid eh einen Index haben sollte es auch keine Performace Probleme geben.

ich kann von dieser idee nur abraten, joins sind böse und verleiten uns, so das wir wandern in dunkelheit....also bevor ich hier anfange zu prädigen, kann dein weg gar nicht funktionieren. es ist die tükische falle zugriff auf beestimmte spalten haben zu wollen und sie dann einfach zu joinen, sei es nun über einen INNER oder OUTER join. aber überlg dir mal was passiert, wenn eine benutzer mehrere freunde hat, wiewillst du den  mit deinem Count und ohne zu gruppieren dann auch noch andere spalten ausgeben, performance wird auch schlechter sein....

Ilja