avoir les tableaux suivants :1. vues2. views_hourly_summary3. vues_daily_summary4. vues_monthly_summary5. views_alltime_summary
exécuter une tâche cron aux intervalles suivants :
-
exécutez toutes les heures et préagrégez les vues pour cette heure à partir de la table des vues et enregistrez le résultat préagrégé dans la table views_hourly_summary, mettez également à jour la table views_alltime_summary
-
exécuter à la fin de chaque jour et préagréger les vues pour ce jour à partir de la table des heures et enregistrer le résultat préagrégé dans la table views_daily_summary
-
exécuter à la fin de chaque mois et préagréger les vues pour ce jour à partir de la table des heures et enregistrer le résultat préagrégé dans la table views_daily_summary
ensuite, lors de la récupération des résultats, vous devrez faire quelques calculs comme suit :
-
Par exemple, si vous souhaitez récupérer les vues des 4 dernières heures, vous récupérez les données des 3 heures entières à partir de la table horaire et pour les données restantes, vous les récupérez à partir de la table des vues comme suit :
sélectionnez item_id, sum(views) as viewsfrom views_hourly_summarywhere heure entre concat(left(now() - intervalle 3 hour, 14), '00:00') et concat(left(now(), 14), '00:00' )grouper par item_id
syndicat
select item_id, count(1) as viewsfrom viewswhere datetime between (now() - interval 4 hour) and concat(left(now() - interval 3 hour, 14), '00:00') or datetime> concat(left( now(), 14), '00:00')regrouper par item_id