Опишу для начала что есть и что неободимо получить.
Есть таблица с записями(~400,000 строк, 17 колонок)
Интресиют 3 столбца
1. OrderID (не уникальный, обозначает название товара, т.е. один и тот же товар мог поступать несколько раз)
2. Save_Date (дата поступления в формате 'XXXX-XX-XX')
3. Save_Time (время поступления, число обозначающее кол-во чегото(!) предположительно чтото вроде секунд или долей секунд)
Необходимо найти самое последнее(первое) время поступления каждого OrderID (т.е. опрделенную запись для каждого OrderID).
Что я делал.
SELECT orderID, MAX(TO_DAYS(Save_Date)*24+Save_Time/10000) as time
FROM market_log
GROUP BY orderID
Здесь мы находим все правильно для каждого orderID
SELECT ML.orderID, ML.Save_Date, ML.Save_Time
FROM (первый запрос) as t1, market_log as ML
WHERE TO_DAYS(ML.Save_Date)*24+ML.Save_Time/10000=t1.time AND ML.orderID=t1.orderID
LIMIT 0,1000
Тут пытаюсь найти реальные Save_Date и Save_Time для каждого OrderID
В итоге запос просто "виснет" — немог дождаться окончания.
Пытался группировать по порядку столбцы, но также натыкался на очень длинное выполнение запроса.
1. Помогите оптимизировать или както подругому составить запрос.
2. Save_Time/10000 — как сделать разрядность выше у получаемого типа float .xx ?