Нужно выводить статистику посещения для каждой отдельной страницы за месяц, текущий день, всего. У каждой страницы есть автор, у одного автора
страниц может-быть несколько, нужно ещё выводить статистику (только для автора) - общее кол-во просмотров всех его страниц.
Я вот думаю может сделать так: завести 2 таблицы,
1 - кол-во просмотров "всего", за исключением последних 30 дней +
кол-во просмотров за последние 30 дней,
за исключением текущего дня(views: page - total - month) ~5000 записей
2 - кол-во просмотров за _каждый_ день, в течении последних 30 дней.
(days: page - date - quantity) PRIMARY KEY(page, date)
Тогда на пхп будет всё выглядеть так, при просмотре страницы:
1) Дёргаем статистику за текущий день, из таблицы на ~150000 записей,
с выборкой
SELECT quantity FROM days WHERE page = $current_page AND date = $current_date
Если вернуло 0 рядов, значит статистики на сегодня нет, тогда {
//этот блок выполнится только 1 раз в сутки
INSERT INTO days (page,date,quantity) VALUES ($current_page, $current_date, 1);
$minus_amount = `SELECT quantity FROM days WHERE page = ? AND date = ($current_date-31 день)`
$plus_amount = `SELECT quantity FROM days WHERE page = ? AND date = ($current_date-1 день)`
UPDATE views SET month=month-($minus_amount+$plus_amount), total=total+$minus_amount
DELETE FROM days WHERE page = ? AND date > ($current_date-30 дней)
}
+ ещё запрос для вывода статистики:
SELECT month, total FROM views WHERE page = ?
Результаты 2-х запросов суммируем. В плане просмотра страниц вроде как бодренько получается, только проблема
с общим кол-ом посещений страниц, принадлежащих 1-му автору, но такие запросы относительно редки.
Можно использовать SUM + завести поле с датой последнего обновления. Что скажите? фтопку?