У меня есть таблица в базе данных, которая хранит данные журнала по времени. На один день в db может быть миллион строк. Времена не имеют никакого регулярного интервала. Он имеет несколько индексов, включая время. Я хочу создать запрос, который будет возвращать набор строк с одной строкой за промежуток времени. Например, я мог бы сделать запрос, чтобы возвращать 1 строку каждые 15 минут в течение дня. Это вернет 24 * 60 = 96 строк. Каждая возвращенная строка фактически будет ближайшей строкой в db до запрошенного интервала (поскольку данные в базе данных не будут равны запрошенному интервалу).Временной интервал SQL-запрос с MySQL
Я в затруднении, как это сделать. Я не могу просто запросить все строки для определенного набора индексов и временного интервала, так как он загрузил бы больше гигабайта данных в память, что слишком медленно. Есть ли эффективный способ сделать это с помощью SQL. Я использую базу данных MySQL. Я был бы открыт для изменения индексов таблицы/и т.д. ...
TIME
11:58
12:03
12:07
12:09
12:22
12:27
12:33
12:38
12:43
12:49
12:55
Если бы я хотел, чтобы запросить это в течение 15-минутного интервала от 12:00 до 1:00, я вернусь:
11:58 (nearest 12:00)
12:09 (nearest 12:15)
12:27 (nearest 12:30)
12:43 (nearest 12:45)
12:55 (nearest 1:00)
Если это упростит, я также могу сохранить время как число (т.е. мс с 1970 года). В вышеприведенном запросе это будет интервал в 900000 мс.
Если есть более одной строки для заданного временного интервала, который строка должна быть использована? Или он должен быть составным из строк? – wallyk
Связано: [SELECT/GROUP BY - сегменты времени (10 секунд, 30 секунд и т. Д.)] (Http://stackoverflow.com/questions/3086386/select-group-by-segments-of-time-10-seconds -30 секунд и т. Д.) –
Вам нужен каждый интервал? Что делать, если нет записей? Что, если одна запись ближе всего к двум различным интервалам (то есть 11:58, 12:27, 01:14 будет 12:14 ближе к 12:15, 12:30 и 12:45 –