WÄHLEN Sie Abfrage 1-Zeile aus jeder Gruppe
Dies ist eine Produkt-Tabelle und haben paar Millionen Datensätze.
Ich möchte die Liste aufnehmen, wie unten:
Normalerweise verwende ich:
SELECT id,
product_name,
store_id
FROM product
GROUP BY store_id
ORDER BY id.
Derzeit mit SQL-performance-Problem. Ich brauche SQL-Abfrage, Ausgabe, Ergebnis wie dieser.
- Poste bitte die Tabellenstrukturen und die Ausgabe der explain-Anweisung als Teil der Frage, also wir können sehen, WARUM die Abfrage so langsam ist. Stellen Sie sicher, dass Indizes in der Tabelle definition.
- erwähnen Sie Ihren Tabellennamen in der Abfrage "Produkt"
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es viele alternativen zu löst dieses, eine, die ich empfehlen ist, haben sich eine Unterabfrage, die separat bekommt die neuesten
ID
(unter der Annahme, dass die SpalteAUTO_INCREMENT
ed) für jedestore_ID
.für eine bessere Leistung, sicher sein, dass Sie einen index für diese Spalten:
ID
undstore_id
.UPDATE 1
wenn Sie wollen haben begrenzen, für alle Datensätze, verwenden Sie das unten
ID
undstore_id
? hinzufügen Sie können das Ergebnis dieser Anweisung?DESC tablename
sollte dies funktionieren, und Sie können Bestellen, indem Sie gemäß Ihren Anforderungen entweder durch die store_id oder id.
Versuchen Sie diese bitte: