Mysql
 sql >> Base de données >  >> RDS >> Mysql

Mise en œuvre de la base de données des fonctionnalités les plus consultées

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 :

  1. 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

  2. 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

  3. 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 :

  1. 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