phpbar.de logo

Mailinglisten-Archive

Gruppierte Anzeige beim Join von zwei Tabellen

Gruppierte Anzeige beim Join von zwei Tabellen

Tim TConnect at gmx.net
Mit Mai 6 14:09:02 CEST 2009


Hallo liebe Liste,

ich habe das Problem, dass eine Abfrage extrem lange dauert, die einen
Join zwischen zwei Tabellen beinhaltet und die gleichzeitig nach dem
Index der ersten Tabelle gruppiert. Also im Prinzip sowas hier:

SELECT t1.id, t1.feld1, t1.feld2, t2.feldA, 
COUNT(t2.ref_id) as numRefs

FROM tabelle1 as t1
INNER JOIN tabelle2 as t2 ON t1.id = t2.ref_id

GROUP BY t1.id

Das Verhältnis zwischen der Menge der Datensätze zwischen Tabelle1 und
Tabelle2 liegt im konkreten Fall etwa bei 1:30. Pro Datensatz in
Tabelle1 gibt es also etwa 30 Referenz-Datensätze in Tabelle2. Lasse ich
das GROUB BY weg, ist die Abfrage sehr schnell, zeigt mir dann aber
logischerweise alle Tabelle1-Datensätze 30 mal an! Abgesehen davon kann
ich dann das COUNT() nicht mehr nutzen. In Tabelle1 sind derzeit rund
100.000 Datensätze. Alle Felder, die in der WHERE-Klausel vorkommen,
sind auch indiziert. Vor allem natürlich die jeweiligen ID's und die
ref_id.

Ich habe mir schon überlegt, ob ich MySQL einfach nur mehr Speicher zur
Verfügung stellen muss, aber wenn das so sein sollte, weiß ich nicht,
welchen Wert aus der my.conf ich entsprechend hochsetzen muss. 

Es wäre schön, wenn mir da jemand einen Tipp geben könnte.


Liebe Grüße
Tim






_______________________________________________
Allgemeine Infos zur Liste: http://www.4t2.com/mysql/
Verwaltung: https://lists.4t2.com/cgi-bin/mailman/listinfo/mysql-de

php::bar PHP Wiki   -   Listenarchive