Je voudrais permettre aux utilisateurs de trier les vidéos par "les plus vues" par période (jour, semaine, mois, année, etc.).Tri par agrégat sur un grand ensemble de données en temps réel
Actuellement, toutes les données sont dans MySQL et, fondamentalement, l'installation est une table "videos", et une table "views" qui contient des lignes avec une video_id, session_id et une colonne datetime.
Pour trier par "le plus regardé" un champ calculé est généré pour chaque vidéo avec COUNT() qui compte toutes les lignes de vue dans la période spécifiée. Cela fonctionne bien pour des périodes comme "heure" et "jour" pour l'instant, mais des périodes comme "mois" et "année" peuvent prendre beaucoup de temps.
Le problème est que ceci n'est pas évolutif. J'ai des milliers de vidéos et la plupart des vidéos génèrent des milliers de vues chaque mois, ce qui représente des millions de vues chaque mois.
Je demande une solution/stratégie générale évolutive. Est-ce que ce genre de choses est faisable dans MySQL ou dois-je considérer une base de données différente?