tem as seguintes tabelas:1. visualizações2. views_hourly_summary3. views_daily_summary4. views_monthly_summary5. views_alltime_summary
execute um cron job nos seguintes intervalos:
-
execute a cada hora e pré-agregue as visualizações para essa hora da tabela de visualizações e salve o resultado pré-agregado na tabela views_hourly_summary, também atualize a tabela views_alltime_summary
-
execute no final de todos os dias e pré-agregue as visualizações para esse dia da tabela de horas e salve o resultado pré-agregado na tabela views_daily_summary
-
execute no final de cada mês e pré-agregue as visualizações para esse dia da tabela de horas e salve o resultado pré-agregado na tabela views_daily_summary
em seguida, ao buscar resultados, você terá que fazer algumas contas da seguinte forma:
-
Por exemplo, se você deseja buscar as visualizações das últimas 4 horas, você deve buscar os dados de 3 horas inteiras da tabela horária e, para os dados restantes, buscá-los na tabela de visualizações da seguinte forma:
selecione item_id, sum(views) as viewsfrom views_hourly_summarywhere hora entre concat(left(now() - intervalo 3 horas, 14), '00:00') e concat(left(now(), 14), '00:00' )grupo por item_id
União
selecione item_id, count(1) como viewsfrom views onde datetime entre (now() - intervalo 4 horas) e concat(left(now() - intervalo 3 horas, 14), '00:00') ou datetime> concat(left( now(), 14), '00:00')grupo por item_id