У меня есть таблица:
QUOTE
| id | value | mar_id | date |
И я пытаюсь выбрать самую последнюю строку для каждого mar_id
(идентификатор рынка).Мне удалось добиться того, что мне нужно, с помощью запроса ниже:
SELECT
q.*
FROM quote q
WHERE q.date = (
SELECT MAX(q1.date)
FROM quote q1
WHERE q.mar_id = q1.mar_id
)
Однако я обнаружил, что запрос невероятно медленный (> 60 с), поскольку моя база данных уничтожает соединение.
Я сделал EXPLAIN
, чтобы выяснить, почему и получил результат:

У меня есть составной уникальный индекс QUO_UQ
на mar_id, date
который, кажется, привыкает.
логически это не кажется таким сложным для выполнения запросом, что я могу сделать, чтобы сделать это более эффективно?