sql >> Databasteknik >  >> RDS >> Mysql

Implementering av mest visade funktionsdatabas

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:

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

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

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

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



  1. Ta bort dubbletter med unikt index

  2. VÄLJA data från flera tabeller?

  3. Användardefinierad variabel som alias MySQL v8.0 fungerar inte

  4. PHP MySQL autoslutförande