har följande tabeller:1. visningar2. views_hourly_summary3. views_daily_summary4. views_monthly_summary5. views_alltime_summary
kör ett cron-jobb med följande intervall:
-
kör varje timme och föraggregera vyerna för den timmen från vytabellen och spara det föraggregerade resultatet i tabellen views_hourly_summary, uppdatera även tabellen views_alltime_summary
-
kör i slutet av varje dag och föraggregera vyerna för den dagen från timmarstabellen och spara det föraggregerade resultatet i tabellen views_daily_summary
-
kör i slutet av varje månad och föraggregera vyerna för den dagen från timtabellen och spara det föraggregerade resultatet i tabellen views_daily_summary
nästa när du hämtar resultat måste du göra lite matematik enligt följande:
-
Om du till exempel vill hämta vyerna för de senaste 4 timmarna, hämtar du 3 hela timmars data från timtabellen och för återstående data hämtar du den från vytabellen enligt följande:
välj item_id, summa(views) som viewsfrom views_hourly_summarywhere timme mellan concat(left(now() - intervall 3 timmar, 14), '00:00') och concat(left(now(), 14), '00:00' )grupp efter item_id
fackförening
välj item_id, count(1) som visningar från visningar där datumtid mellan (now() - intervall 4 timmar) och concat(left(now() - intervall 3 timmar, 14), '00:00') eller datetime> concat(left( now(), 14), '00:00') gruppera efter item_id