Angenommen, ich habe eine Tabelle mit Kunden und eine Tabelle mit Einkäufen. Jeder Einkauf gehört zu einem Kunden. Ich möchte eine Liste aller Kunden zusammen mit ihrem letzten Kauf in einer SELECT
-Anweisung erhalten. Was ist die beste Vorgehensweise? Irgendwelche Ratschläge zum Erstellen von Indizes?
Bitte verwenden Sie diese Tabellen-/Spaltennamen in Ihrer Antwort:
- Kunde:
id
,name
- Kauf:
id
,customer_id
,item_id
,date
Und in komplizierteren Situationen, wäre es (leistungsbedingt) vorteilhaft, die Datenbank zu denormalisieren, indem man den letzten Kauf in die Kundentabelle aufnimmt?
Wenn die (Kauf-) id
garantiert nach Datum sortiert ist, können die Anweisungen durch die Verwendung von etwas wie LIMIT 1
vereinfacht werden?
2 Stimmen
Ja, es könnte sich lohnen, zu denormalisieren (wenn es die Leistung erheblich verbessert, was Sie nur durch Testen beider Versionen herausfinden können). Aber die Nachteile der Denormalisierung sind normalerweise das Vermeiden wert.
3 Stimmen
Verwandte: jan.kneschke.de/projects/mysql/groupwise-max