Mailinglisten-Archive |
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