Je voudrais de l'aide pour la jointure suivante. J'ai une table (avec environ 20 millions de lignes) qui se compose de:Joindre une table sur elle-même - performance
MemberId (clé primaire) | Id (clé primaire) | TransactionDate | Solde
Je voudrais obtenir la dernière Balance pour tous les clients en une seule requête. Je sais que je pourrais faire quelque chose comme ça (je l'ai juste écrit de ma mémoire). Mais c'est terriblement lent.
SELECT *
FROM money
WHERE money.Id = (SELECT MAX(Id)
FROM money AS m
WHERE m.MemberId = money.MemberId)
Existe-t-il d'autres options (plus rapides/plus intelligentes)?
Pour être sûr, la clé primaire est composite, et la première colonne est MemberId? – Benoit
Umbrella a une bonne réponse, mais je serais vraiment intéressé de savoir comment MySQL gère l'opérateur 'IN' (remplacez le premier' = '), si cela ne vous dérange pas. –
@Benoit Oui la clé primaire est composite et la première colonne est MemberId (c'est une table MyIsam) – PKK