Мне нужна помощь при следующем объединении. У меня есть один стол (около 20 миллионов рядов), который состоит из:Соедините таблицу с собой - производительность
MemberId (Primary Key) | Идентификатор (первичный ключ) | TransactionDate | Баланс
Я хотел бы получить последний баланс для всех клиентов в одном запросе. Я знаю, что могу сделать что-то подобное (я просто написал это из своей памяти). Но этот путь ужасно медленный.
SELECT *
FROM money
WHERE money.Id = (SELECT MAX(Id)
FROM money AS m
WHERE m.MemberId = money.MemberId)
Есть ли другие (более быстрые/умные) варианты?
Конечно, первичный ключ является составным, а первый столбец - MemberId? – Benoit
Umbrella имеет хороший ответ, но мне было бы очень интересно узнать, как MySQL работает с оператором 'IN' (замените первый' = '), если вы не возражаете. –
@Benoit Да, первичный ключ является составным, а первый столбец - MemberId (это таблица MyIsam). – PKK