J'ai une table (MyISAM) avec des colonnes views_total
, views_24h
, views_7d
, views_30d
. views_24h
= voir pour les dernières 24 heures, views_7d
= 7 derniers jours etc Toutes ces colonnes sont INT et INDEX parce que je fais le tri par eux.Mise à jour de views_24hours, views_7days, views_30days trop lent
Chaque heure (pour 24h), ou tous les jours (pour 7d, 30j) je mets à jour ces colonnes en utilisant UPDATE ... JOIN (... UNION ALL ...) USING ... SET ...
UPDATE lui-même prend environ 2,5 sec. (100-120K lignes), mais avant de mettre à jour ces colonnes, je devrais les mettre à null. Donc, je fais UPDATE table SET views_24h = 0
et cette requête prend environ 4 secondes.
Existe-t-il un moyen d'accélérer cette mise à jour? Peut-être, je devrais choisir un autre algorithme ou un autre modèle de données à cette fin? Peut-être, je devrais séparer ces champs dans une autre table et juste faire DELETE (mais je vais provoquer la charge pendant JOIN lors de l'affichage)?
J'ai assez bonne solution NoSQL pour cette (Zset de Redis de type de données), mais je veux réaliser d'abord comment le faire rapidement MySQL ...
Merci.