Компоновка статистики по дням и часам - как это делается ?

GrayMaster

Новичок
Компоновка статистики по дням и часам - как это делается ?

Такая задача:
В системе зарегистрированно множество пользователей. В таблицу "clicks" складываются данные кликов каждого пользователя, путём INSERT DELAYED INTO `clicks` ....
Структура таблицы такая:
member_id|hour|date|click_type|и др. информация

Необходимо для каждого пользователя отдавать статистику по кликам по дням/часам.
например сколько кликов и какого типа было сделано им за выбранный час или день.

Выводить такую статистику в рил-тайме для каждого пользователя путём SQL запроса, типа SELECT ... FROM ... GROUP BY `member_id`, `hour`, `date` - думаю не самый хороший вариант, т.к. таблица "clicks" может накопить пару миллионов записей :) Думаю лучше всё это сгруппировывать каждые 15 минут в таблицы статистики, например "hours" и "days", а затем чистить таблицу "clicks". А при запросе статистики пользователю будут отдавать данные из уже готовых таблиц "hour" и "days".

Правильны ли мои рассуждения ? или подскажите как правильнее сделать.

Спасибо.
 

Фанат

oncle terrible
Команда форума
объясните, кто-нибудь, этому буратине, что такое база данных, а?
 

GrayMaster

Новичок
offtopic:
Фанат, можешь вообще не писать в этом топике. Я уже который раз замечаю что ты совершенно не пытаешься помоч, а лишь стебаешься.
Чем писать всякую чушь, лучше подскажи как делать, или вообще не пиши.
Спасибо.
 

Фанат

oncle terrible
Команда форума
Фанат, можешь вообще не писать в этом топике.
Не твоего ума дело, что и куда мне писать.
Я уже который раз замечаю что ты совершенно не пытаешься помоч,
и не обязан.
помогают - в богадельне. инвалидам.
если ты принял этот форум за службу скорой помощи для ламеров, то ты крупно ошибся.
функции форума не ограничиваются утиранием соплей.
поэтому свои претензии оставь при себе.
 

WP

^_^
GrayMaster
Ну вот давай рассуждать. Чтобы вывести статистику по дням/часам для каждого пользователя нам не нужно выбирать из БД информацию о каждом запросе, а только кол-во запросов с определенным member_id и часом. Например, [sql]SELECT COUNT(*) as `num` FROM `table` WHERE `member_id` = 1 AND `hour` BETWEEN 0 AND 5[/sql] Получим число запросов пользовтеля 1 с 0 до 5, можно по аналогии выбрать еще и за определенную дату.
 

GrayMaster

Новичок
А что быстрее ?

это:
PHP:
SELECT COUNT( * ) AS `num` 
FROM `table` 
WHERE `member_id` = 1 AND `hour` 
BETWEEN 0 AND 5
или это
PHP:
SELECT count(*) AS `num` FROM `table` WHERE `member_id` >= 0 AND `member_id` <= 5 GROUP BY `member_id`, `hour`
-~{}~ 11.05.06 15:20:

Пока я пользуюсь GROUP BY...
 

zerkms

TDD infected
Команда форума
EXPLAIN смотри, скорость работы как правило можно оценить по числу просмотренных записей
 
Сверху