има следните таблици:1. изгледи2. views_hourly_summary3. views_daily_summary4. views_monthly_summary5. views_alltime_summary
да изпълнява задача на cron на следните интервали:
-
стартирайте всеки час и предварително обобщете изгледите за този час от таблицата с изгледи и запишете предварително обобщения резултат в таблицата views_hourly_summary, също актуализирайте таблицата views_alltime_summary
-
стартирайте в края на всеки ден и предварително обобщете изгледите за този ден от таблицата с часове и запазете предварително обобщения резултат в таблицата views_daily_summary
-
стартирайте в края на всеки месец и предварително обобщете изгледите за този ден от таблицата с часове и запазете предварително обобщения резултат в таблицата views_daily_summary
След това, когато извличате резултати, ще трябва да направите малко математика, както следва:
-
Например, ако искате да извлечете изгледите за последните 4 часа, ще извлечете данните за цели 3 часа от почасовата таблица, а за останалите данни ще ги извлечете от таблицата за изгледи, както следва:
изберете item_id, sum(views) като изгледи от views_hourly_summary, където час между concat(left(now() - интервал 3 часа, 14), '00:00') и concat(left(now(), 14), '00:00' )групиране по идентификатор на елемент
съюз
изберете item_id, count(1) като изгледи от изгледи, където datetime между (now() - интервал 4 часа) и concat(left(now() - интервал 3 часа, 14), '00:00') или datetime> concat(left( now(), 14), '00:00')групиране по item_id