Supponiamo di avere una tabella di clienti e una tabella di acquisti. Ogni acquisto appartiene a un cliente. Voglio ottenere un elenco di tutti i clienti insieme al loro ultimo acquisto in un'unica istruzione SELECT. Qual è la migliore pratica? Qualche consiglio sulla costruzione di indici?SQL join: selezionare l'ultimo record in una relazione uno-a-molti
Si prega di utilizzare questi nomi tabella/colonna nella sua risposta:
- cliente: id, nome
- acquisto: id, customer_id, item_id, data
E nelle situazioni più complicate, Sarebbe (per quanto riguarda le prestazioni) utile per denormalizzare il database inserendo l'ultimo acquisto nella tabella dei clienti?
Se l'ID (acquisto) è garantito per essere ordinato per data, le dichiarazioni possono essere semplificate utilizzando qualcosa come LIMIT 1
?
Sì, potrebbe valere la pena denormalizzare (se migliora molto le prestazioni, che è possibile scoprire solo testando entrambe le versioni). Ma gli svantaggi della denormalizzazione di solito valgono la pena di essere evitati. –
Correlato: http://jan.kneschke.de/projects/mysql/groupwise-max/ – igorw