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

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".

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

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

это:
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...
 
EXPLAIN смотри, скорость работы как правило можно оценить по числу просмотренных записей
 
Сверху