Hi!
(Wird eigentlich andersrum benannt, also m:n-Beziehung.)
Hmm, bei Wikipedia steht n:m und google findet auch überwiegend n:m. Egal.
Es hat dort jemand einheitlich auf n:m geändert, früher waren wohl beide Schreibweisen im Artikel. Ein "richtig" scheint es dabei wohl nicht zu geben. Ich finde m:n besser, weil wie beim 1:n das n rechts steht.
Also ich möchte die Produkte bzw. die dazugehörigen Informationen abfragen, unter Berücksichtigung der ausgewählten Kategorien.
Das "limit 30" am Ende bezieht sich nicht auf die 5 Kategorien sondern auf die Anzahl der Produkte die ausgelesen werden sollen.
Schon klar wie das Limit beabsichtigt ist, aber mit der Gruppierung bekommst du nur einen Datensatz je Gruppe. Da die Kategorien auf 5 beschränkt sind, sollten auch nur 5 Gruppen gebildet werden können und damit 5 Datensätze im Ergebnis stehen.
So wie ich die Abfrage hier geschrieben habe funktioniert es eigentlich so wie es soll.
Das kann ich mir nicht vorstellen, oder du hast dein geschildertes Ergebnis mit einem anderen Statement bekommen. Problematisch ist die Abfrage mit dieser Art der Gruppierung sowieso. Manche behaupten auch, das sein schlichtweg falsch, dass MySQL solcherart gruppierte Abfragen zulässt.
Die Frage ist welche Abfrage nun schneller abgearbeitet werden kann.
Die lässt sich nicht so einfach beantworten. Die Geschwindigkeit hängt von vielen Kriterien ab. Wesentliche Beschleuniger sind üblicherweise Indexe. Die werden aber vom Optimizer mal verwendet und mal nicht. Ausschlaggebend sind dabei unter anderem der Umfang der bei einer Abfrage entstehenden Datenmenge und die Kardinalität des Indexes.
Lo!