Предположим, у меня есть таблица (MySQL), подобная этой:
CREATE TABLE sessions (
session_id INT NOT NULL AUTO_INCREMENT,
name CHAR(12),
start INT,
end INT,
PRIMARY KEY (session_id)
)
для отслеживания пользователей, вошедших в приложение. Каждое имя пользователя создает в этой таблице запись, задающую время начала (в виде целого числа, считая секунды с эпохи Unix), а выход из системы обновляет эту таблицу, устанавливая время окончания аналогичным образом. Моя проблема заключается в том, чтобы найти количество зарегистрированных пользователей с пятиминутными интервалами за определенный промежуток времени (обычно за день).
На данный момент я написал процедуру, которая перебирает данные.
SET t = begin_time;
WHILE t <= end_time DO
SELECT t, COUNT(1) FROM TABLE WHERE start <= t AND end >= t;
SET t = t + 300;
END WHILE;
Это довольно много времени; Я ищу альтернативные решения для этой проблемы. Веб-ссылки, указатели - любая помощь подойдет.
Заранее спасибо.