У меня есть таблица (назовем его TABLEA), который выглядит примерно так:Mysql мин/макс оптимизация
id | dateA | dateB
----------|------------|-------------
1 | 2011-01-01 | 2010-05-01
1 | 2011-05-01 | 2010-06-12
2 | 2011-01-11 | 2010-01-31
2 | 2011-01-31 | 2010-02-01
3 | 2011-05-11 | 2010-08-02
3 | 2011-08-02 | 2010-09-10
Моя цель состоит в группе строк по идентификатору, и получить минимум dateA и максимум dateB и получить таблицу, которая выглядит примерно так:
id | min(dateA) | max(dateB)
----------|------------|-------------
1 | 2011-01-01 | 2010-06-12
2 | 2011-01-11 | 2010-02-01
3 | 2011-05-11 | 2010-09-11
Прямо сейчас, я использую ЛЕВЫЙ присоединиться подход:
SELECT
id,
tableB.dateA,
tableC.dateB
FROM tableA as a
LEFT JOIN (
SELECT id, min(dateA)
FROM tableA
GROUP BY id
)tableB ON a.id = tableB.id
LEFT JOIN (
SELECT id, max(dateB)
FROM tableA
GROUP BY id
)tableC ON a.id = tableC.id
Однако мой подход слишком медленный. У меня довольно большой стол, и для получения желаемого результата требуется около 7 секунд.
Может ли кто-нибудь предложить мне хорошую технику оптимизации для применения к моей ситуации?
спасибо.
J
Lol what the heck? Клянусь, что в последний раз это не сработало (я должен был пробоваться неправильно) – m0dE
В любом случае, спасибо! – m0dE